【问题标题】:How to update multiple records of Rails forms at once?如何一次更新 Rails 表单的多条记录?
【发布时间】:2020-05-05 20:33:48
【问题描述】:

我在索引页面上有一个非常简单的表格,显示我的“order_packages”表格中的值。我想让每个表格行允许用户更新每个订单的“价格”字段的值。在用户输入任意数量的价格后,我希望有 1 个提交按钮可以一次更新所有订单。这是我现有的代码:

<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


    【解决方案1】:

    一个选项是您可以在表单中多次使用相同的字段,这应该可以将其作为字段数组发送。

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

    注意价格字段上的 multiple: true 参数,这是 simple_form 将输入呈现为 html 数组输入的方式。此外,要呈现 activemodel 验证错误,您需要根据您希望它的外观做更多的工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-13
      • 1970-01-01
      相关资源
      最近更新 更多