在 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 4,Active Merchant