f.error_messages仅显示基础中的第一条错误消息

时间:2011-08-31 21:17:06

标签: ruby-on-rails ruby validation activerecord error-handling

我已将问题简化为以下内容:f.error_messages仅显示基础上的第一个错误。要复制,请执行以下操作:

errors.add_to_base "Error 1"
errors.add_to_base "Error 2"

然后在视图上打印消息(即<%= f.error_messages %>),并观察只出现“错误1”,但不是“错误2”!此外,检查errors.full_messages并观察它确实同时存在两个错误。其值为["Error 1", "Error 2"]

任何人都可以复制此问题吗?更重要的是......任何人都可以告诉我如何让f.error_messages打印所有错误吗?

谢谢!

UPDATE :实际上,我有A类has_one类B.我在B类基础上添加,并在A类上调用f.error_messages。看起来如果我做以下,它显示了B类错误的完整列表:

<% class_a.fields_for :class_b do |class_b| %>
  <%= class_b.object.errors.full_messages.join("<br />") %>
<% end %>

但是,如果我在父母上拨打errors,则会工作。

<%= class_a.object.errors.full_messages.join("<br />") %>

仅显示B类的第一个错误(即“错误1”)。显然,A类接受__edted_attributes_for:class_b。

最后,我在Rails 2.3.11上。

1 个答案:

答案 0 :(得分:1)

您需要将其作为数组处理,而不是作为可以打印的单个值处理。

<% f.error_messages.each do |msg| %>
  <%= msg %>
<% end %>