如何在具有多个资源的form_for上显示错误

时间:2015-12-12 06:29:02

标签: ruby-on-rails

我有一个订单表格,我可以在其中添加订单商品

DistrictVotableController

我想检查创建项目时是否有任何错误。

这是我在订单上使用的内容:

<h2>Order: <%= @order.title %></h2>

<h3>Items</h3>
<%= render @order.items %>

<h4>Add an item:</h4>
<%= form_for([@order, @order.items.build]) do |f| %>
    <%= f.label :Item %>
    <%= f.submit 'Submit' %>
<% end %>

当表单中有多个资源时,我不知道如何显示错误。

1 个答案:

答案 0 :(得分:0)

我之前遇到过这种情况,最终想要真正自定义消息。为了做到这一点,我使用了这样的解决方案:

<% if @errors.any? %>
    <div id="error_explanation">
      <h2>
        <%= pluralize(@errors.count, "error") %> prohibited
        this order from being saved:
      </h2>
      <ul>
        <% @errors.each do |msg| %>
          <li><%= msg %></li>
        <% end %>
      </ul>
    </div>
  <% end %>

这允许您在控制器中创建一个@errors对象,您可以在其中构建消息数组。例如:

@errors = []
@errors += @order.errors.map(&:full_messages)
@errors += @items.map(&:errors).map(&:full_messages).flatten
...

我希望这有帮助!