在 Rails 视图中显示错误的不同方法

Posted

技术标签:

【中文标题】在 Rails 视图中显示错误的不同方法【英文标题】:different ways to display errors in a Rails view 【发布时间】:2011-12-31 17:57:00 【问题描述】:

在我看来,我一直包括以下部分(不是很干):

<% if @model.errors.any? %>
  ...
  <% @model.errors.full_messages.each do |msg| %>
    ...
  <% end %>
<% end %>

不过,Rails 也提供了flash[:error] 功能。它是否仅适用于像控制器异常这样的单个故障消息?还是应该对所有内容都使用flash[:error] 并将模型错误复制到该哈希中?

【问题讨论】:

【参考方案1】:

诸如模型错误之类的事情可能存在于局部;将相关对象作为本地对象传入:

<%= form_for(@micropost) do |f| %>
  <%= render 'shared/error_messages', :object => f.object %>

就我个人而言,我觉得 flash 作用域适用于不同类别的消息,但从根本上说,将它用于验证错误也没有什么“不正确”的地方。

【讨论】:

哈,谢谢你提醒我关于局部的事情!不知道为什么我一开始没有想到。 您还可以按照人们已经习惯使用 if f.object.errors.any? 的方式对其进行进一步抽象,这在您进行嵌套关联和其他事情时往往会有所帮助。

以上是关于在 Rails 视图中显示错误的不同方法的主要内容,如果未能解决你的问题,请参考以下文章

Rails 视图在删除链接中传递了错误的参数

Rails:用按钮隐藏记录,找不到ID错误的记录

渲染 json 未显示在 rails 4 的视图中

如何在视图中显示支付网关响应消息 - Rails 4,Active Merchant

Rails 视图在双花括号中显示格式输入,例如 parameter,而不是实际值

关系数据库在视图中显示来自不同表的字段,rails