【发布时间】:2018-06-16 08:47:10
【问题描述】:
我有一个有 X 行的表。我使用迭代器迭代集合中的每个对象并连续渲染它。
每个对象/行也与它自己的表单相关联。
但我想一次保存整个集合,并在用户点击 1 个提交按钮时更新所有子表单,而不是每个表单实例 1 个。
这是代码的示例:
<% @port_stocks.each do |port_stock| %>
<tr>
<td><%= number_to_currency(port_stock.purchase_price) %></td>
<td><%= port_stock.volume %></td>
<td>
<% cp = ClosedPosition.new %>
<%= simple_form_for cp, url: port_stocks_sell_order_path, method: :post, html: { class: "form-inline" } do |f| %>
<div class="form-group">
<%= f.input_field :num_units, id: "sell-ps-#{port_stock.id}", class: "form-control mx-sm-3" %>
</div>
<%= f.submit "Save", class: "btn btn-primary" %>
<% end %>
</td>
</tr>
<% end %>
如果@port_stocks 集合中有3 个port_stock 对象,则上面的表单会呈现3 个提交按钮——这正是我不想要的。
我只想要 1 个提交按钮,为集合中的每个 port_stock 对象提交一个 cp 相关信息。
【问题讨论】:
-
您是否可以考虑用 form_tag(或简单表单)包装整个表格并构建自定义字段名称,然后在控制器中管理自定义保存过程?我的意思是参数可能类似于
"closed_position"=>{"port_stock_id"=>{"1"=>{"num_units"=>"999"}, "2"=>{"num_units"=>"888"}}}。这样一键提交即可。
标签: ruby-on-rails ruby-on-rails-5 simple-form