表单在发票项数量可变的rails中提交,布尔值是true或false。如何获取所有这些值并将其保存在数据库中的相应字段中:请求参数为:
<ActionController::Parameters {"utf8"=>"✓", "authenticity_token"=>"cCQjRuaHnsIkCaffZfi6t3err4YPxrEWXSXNKy4gFmDUOtWt+T4JALddxkJWo/7giXD3dNXlvJz9tJ0EYDKKjQ==",
"invoiced_186"=>"1", "invoiced_187"=>"1", "invoiced_188"=>"1",
"invoiced_189"=>"1", "invoiced_190"=>"1",
"commit"=>"save", "controller"=>"cader/caders", "action"=>"add_invoiced_items", "id"=>"63813"} permitted: false>
模板化为:
<%= form_with url: cader_add_invoiced_items_path(@job_checkout.id), local: true do |f| %>
<table class="table table-bordered table-striped">
<thead>
<th>Item #</th>
<th>File</th>
<th>Service</th>
<th>Price $USD</th>
<th>Invoice</th>
</thead>
<tbody>
<% @done_job.each do |done_job| %>
<tr>
<td>
<%= f.check_box :"invoiced_#{done_job.id}" %>
<label>
<%= done_job.id %>
</label>
</td>
<td><%= done_job.file_name %></td>
<td><%= done_job.service %></td>
<td>$<%= done_job.amount %></td>
<td></td>
</tr>
<% end %>
</tbody>
</table>
<%= f.submit 'save' %>
如何在服务器端管理它们,因为inoice_x字段的数量是可变的。
您可以这样命名您的复选框
<checkbox name="invoiced[]" value="187">
您应该收到一组检查的值。 (对不起,我无法在ATM上对其进行测试)
[187, 188]
或这样做
<checkbox name="invoiced[187]" >
然后,我相信您会收到一个哈希值
{187 = 1, 188 = 1}