Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails错误不会显示在f.error_消息中,但会显示在错误中_Ruby On Rails_Ruby_Validation - Fatal编程技术网

Ruby on rails Rails错误不会显示在f.error_消息中,但会显示在错误中

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%>

使用@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.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 %>