Rails错误不会出现在f.error_messages中,但会出现错误

时间:2009-08-10 16:32:59

标签: ruby-on-rails ruby validation

当使用@ model.errors访问时,我在视图中出现 的模型中存在错误。但是,如果我尝试

,他们会出现
  <%form_for @applicant do |f|%>
      <%=f.error_messages%> 
      This is zero, freakily: <%=f.error_messages.length%> 
      But this is not: <%=@applicant.errors.length%>

但是,如果我

,则会出现错误
@applicant.errors.each

有关解决此问题的建议吗?这绝对很奇怪......

表格完全正常。

编辑:感谢ScottD的回答,我弄清楚发生了什么。我在这里简化了问题,但这就是问题所在。我非常这样做:

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

其中存在问题。 form_helper调用的error_messages_for方法需要一个深层次的东西(意味着像@applicant这样的实例变量,然后它转换为:申请人,并且从不喜欢@ applicant.status)。谢谢!

2 个答案:

答案 0 :(得分:2)

在此示例中,f不是@applicant对象,它是“表单”构建器对象。你想要的是:

<%= error_messages_for 'applicant' %>

请参阅Rails API Docs

答案 1 :(得分:0)

使用此....这对我有用

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