【问题标题】:f.error_messages only shows first error message in basef.error_messages 仅显示基础中的第一条错误消息
【发布时间】:2011-11-07 23:26:30
【问题描述】:

我已将问题简化为以下内容:f.error_messages 仅显示基础上的第一个错误。要复制,请执行以下操作:

errors.add_to_base "Error 1"
errors.add_to_base "Error 2"

然后在视图上打印消息(即<%= f.error_messages %>),观察只出现“错误1”,而不出现“错误2”!此外,检查errors.full_messages 并观察它确实包含两个错误。它的值为["Error 1", "Error 2"]

谁能复制这个问题?更重要的是...谁能告诉我如何让f.error_messages 打印所有错误?

谢谢!

更新:实际上,我有 A 类 has_one B 类。我在 B 类的基础上添加,并在 A 类上调用 f.error_messages。看起来如果我执行以下操作,它显示了 B 类错误的完整列表:

<% class_a.fields_for :class_b do |class_b| %>
  <%= class_b.object.errors.full_messages.join("<br />") %>
<% end %>

但是,如果我在父级上调用 errors,它不起作用

<%= class_a.object.errors.full_messages.join("<br />") %>

仅显示 B 类的第一个错误(即“错误 1”)。显然,A 类接受_nested_attributes_for :class_b。

最后,我使用的是 Rails 2.3.11。

【问题讨论】:

    标签: ruby-on-rails ruby validation activerecord error-handling


    【解决方案1】:

    您需要将其作为一个数组来处理,而不是作为可以打印的单个值。

    <% f.error_messages.each do |msg| %>
      <%= msg %>
    <% end %>
    

    【讨论】:

    • 这不起作用。但实际上我刚刚发现了另一个难题,我已经相应地更新了这个问题。这似乎是因为我使用的是嵌套表单,并且错误被添加到子对象中。
    猜你喜欢
    • 2012-06-04
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    • 2013-09-19
    • 1970-01-01
    相关资源
    最近更新 更多