2011-08-31 60 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

這不起作用。但實際上我只是發現了另一個難題,我相應地更新了這個問題。它似乎是由我使用嵌套窗體,並將錯誤添加到子對象的事實造成的。 –