如何在Rails中保存可变数量的相同类型和相同名称的参数?

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

表单在发票项数量可变的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字段的数量是可变的。

ruby-on-rails ruby-on-rails-5
1个回答
1
投票

您可以这样命名您的复选框

<checkbox name="invoiced[]" value="187">

您应该收到一组检查的值。 (对不起,我无法在ATM上对其进行测试)

[187, 188]

或这样做

<checkbox name="invoiced[187]" >

然后,我相信您会收到一个哈希值

{187 = 1, 188 = 1}
© www.soinside.com 2019 - 2024. All rights reserved.