2011-08-31 80 views
1

我已将我的问题简化为以下内容:f.error_messages仅显示底部的第一个错误。要复制,请执行下列操作: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类accep_nested_attributes_for:class_b。

最后,我在Rails 2.3.11上。

回答

1

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

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

这不起作用。但实际上我只是发现了另一个难题,我相应地更新了这个问题。它似乎是由我使用嵌套窗体,并将错误添加到子对象的事实造成的。 –