我在索引页上有一个非常简单的表,显示 "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>
目前,每个订单都有自己的提交按钮,只更新该订单。我怎样才能用一个按钮更新所有的订单?非常感谢
一个选择是你可以在表格中多次使用相同的字段,这应该可以使它作为一个字段数组发送。
<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验证错误,你需要做一些更多的工作,这取决于你想让它看起来如何。