我已将问题简化为以下内容: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上。
答案 0 :(得分:1)
您需要将其作为数组处理,而不是作为可以打印的单个值处理。
<% f.error_messages.each do |msg| %>
<%= msg %>
<% end %>