Ruby on rails Rails错误不会显示在f.error_消息中,但会显示在错误中
使用@model.errors访问时,显示在视图中的模型中有错误。但是,如果我尝试这样做,它们不会出现Ruby on rails Rails错误不会显示在f.error_消息中,但会显示在错误中,ruby-on-rails,ruby,validation,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%>
<%form_for @applicant do |f|%>
<%=f.error_messages%>
This is zero, freakily: <%=f.error_messages.length%>
But this is not: <%=@applicant.errors.length%>
关于我应该在哪里解决这个问题,有什么建议吗?真奇怪
该表单在其他情况下工作正常
编辑:多亏了斯科特的回答,我才知道发生了什么。我把问题简化了,但这就是问题所在。我当时真的是这样做的:
<%form_for @applicant.thinger do |f|%>
这就是问题所在。form\u helper调用的方法的错误消息需要是一级深的(这意味着像@applicator这样的实例变量,然后将其转换为:applicator,而决不像@applicator.status)。谢谢 在本例中,f不是@applicator对象,而是表单生成器对象。您想要的是:
<%= error_messages_for 'applicant' %>
请参阅。使用此。。。。这对我有用
<% if @applicant.errors.any? %>
<% @applicant.errors.full_messages.each do |msg| %>
<%= msg %>
<% end %>
<% end %>
+1这很有效,但对我来说毫无意义。我总是使用f.error\u消息,它总是有效的。正如这里所说,您可以使用FormBuilder实例来获取错误。我的意思是,谢谢您,如果您有任何关于为什么它不能与f一起工作的建议,我想知道。我在上面的问题中回答了我自己的问题,谢谢您的回答。
<% if @applicant.errors.any? %>
<% @applicant.errors.full_messages.each do |msg| %>
<%= msg %>
<% end %>
<% end %>