如何一次性更新Rails表单的多个记录?

问题描述 投票:0回答:1

我在索引页上有一个非常简单的表,显示 "order_packages "表中的值。我想让每个表的行都允许用户更新每个订单的 "价格 "字段的值。当用户输入完他们想要的价格后,我希望有一个提交按钮,一次更新所有的订单。这是我现有的代码。

<tbody>
    <% @order_packages.each do |order| %>
      <tr>
        <td><%= order.id %></td>
        <td><%= order.created_at.try(:strftime, '%b %e %y') %></td>
        <td><%= order.package.name %></td>
        <td><%= order.student.school.name %></td>

        <%= simple_form_for(order) do |f| %>
          <%= f.error_notification %>

            <td><%= f.input :price, :label => false, :id => "price" %></td>
            <td><%= f.button :submit, "Update Order" %></td>

        <% end %>

        <td><%= link_to 'Edit', edit_order_package_path(order) %></td>
      </tr>
    <% end %>
  </tbody>

目前,每个订单都有自己的提交按钮,只更新该订单。我怎样才能用一个按钮更新所有的订单?非常感谢

ruby-on-rails ruby-on-rails-4
1个回答
0
投票

一个选择是你可以在表格中多次使用相同的字段,这应该可以使它作为一个字段数组发送。

 <tbody>
    <%= simple_form_for(order) do |f| %>
      <% @order_packages.each do |order| %>
        <tr>
          <td><%= order.id %></td>
          <td><%= order.created_at.try(:strftime, '%b %e %y') %></td>
          <td><%= order.package.name %></td>
          <td><%= order.student.school.name %></td>


          <td><%= f.input :price, :label => false, :id => "price", multiple: true %></td>

          <td><%= link_to 'Edit', edit_order_package_path(order) %></td>
  </tr>
    <% end %>
  <%= f.button :submit, "Update Order" %> 
 <% end %>
</tbody>

请注意 多重:真 param在价格字段上,这是simple_form将输入渲染为html数组输入的方式。另外,为了渲染activemodel验证错误,你需要做一些更多的工作,这取决于你想让它看起来如何。

© www.soinside.com 2019 - 2024. All rights reserved.