2009-08-10 68 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 %>