2009-08-10 65 views
1

我有一個模型中的錯誤,是用@ model.errors訪問時出現在視圖中。然而,他們不顯示,如果我嘗試做Rails錯誤不在f.error_messages中顯示,但在錯誤他們是

<%form_for @applicant do |f|%> 
     <%=f.error_messages%> 
     This is zero, freakily: <%=f.error_messages.length%> 
     But this is not: <%[email protected]%> 

然而,存在錯誤,如果我做

@applicant.errors.each 

任何建議,我應該去解決呢?這絕對是奇怪的......

否則,表格工作完美。

編輯:感謝ScottD的回答,我弄清楚發生了什麼事。我在這裏簡化了這個問題,但那是問題所在。我真的此:

<%form_for @applicant.thinger do |f|%> 

,這其中就有問題。 form_helper調用的error_messages_for方法需要將事物深入一層(意味着像@applicant這樣的實例變量,然後將其轉換爲:申請人,並且永遠不會像@ applicant.status)。謝謝!

回答

2

在此示例中,f不是@applicant對象,而是表單構建器對象。你想要的是一樣的東西:

<%= error_messages_for 'applicant' %> 

Rails API Docs

+0

+1這工作,但它是沒有意義的我。我總是使用f.error_messages,它始終工作。正如它在這裏所說,http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html你可以使用FormBuilder實例來獲取錯誤。 – 2009-08-10 18:24:27

+0

我的意思是,謝謝你,如果你有任何建議,爲什麼它不會與f我想知道請。 – 2009-08-10 18:26:37

+0

我在上面的問題中回答了我自己的問題,並感謝您的回答。 – 2009-08-10 18:50:10

0

使用此....這爲我工作

<% if @applicant.errors.any? %> 
    <% @applicant.errors.full_messages.each do |msg| %> 
     <%= msg %> 
    <% end %> 
<% end %>