【问题标题】:Rails 4, add checkbox for each object in a table?Rails 4,为表中的每个对象添加复选框?
【发布时间】:2016-12-08 05:15:53
【问题描述】:

我想有条件地为表格中的每个对象添加一个复选框,以便用户可以选择多个项目。当用户单击提交时 - 我想更改已选择对象的状态并通过 ajax 更新表。我看过 collection_check_boxes 但我不确定在这种情况下如何实现它。

见下文,我希望修改的代码 - 包括每一行的复选框。

<% if @events != nil %>
    <% @events.each do |event| %>
    <tr>
        <td><%= event.driver.name%></td>
        <td><%= event.name%></td>
        <td><%= event.drop_off? ? "Drop Off At" : "Pick Up From" %></td>
        <td><%= event.location_name%></td>
        <td><%= event.is_game ? "Game" : "Not Game(event, practice)" %></td>
        <td><%= event.location_address %></td>
        <td><%= event.date ? event.date.strftime("%A, %d %b %Y %l:%M %p") : "Please Enter Details on TeamSnap!"%></td>
    </tr>
    <% end %>
<% end %>

更新:

这是我想出的:

<% if @events != nil %>
    <%= form_tag events_swap_path(@carpool) do %>
        <div><%= submit_tag 'Swap!' %></div>
        <% @events.each do |event| %>
        <tr>
            <td><%= event.driver.name%></td>
            <td><%= event.name%></td>
            <td><%= event.drop_off? ? "Drop Off At" : "Pick Up From" %></td>
            <td><%= event.location_name%></td>
            <td><%= event.is_game ? "Game" : "Not Game(event, practice)" %></td>
            <td><%= event.location_address %></td>
            <td><%= event.date ? event.date.strftime("%A, %d %b %Y %l:%M %p") : "Please Enter Details on TeamSnap!"%></td>
            <td><%= fields_for "events[]", event do |f| %>
                        <%= f.check_box :id, {multiple: true}, 1, nil %>
                    <% end %>
            </td>
        </tr>
        <% end %>
    <% end %>
<% end %>

问题是,当我提交时,我在我选择的事件的 params 哈希中得到了一个不需要的哈希结构。在下面提交后查看 params 哈希中的内容:

{"commit"=>"Swap!", "utf8"=>"✓", "authenticity_token"=>"P0JNhyco3B5ijMFurf3SIQ9ILTT9CGUyrmdInoshwPWvyF+E/xoWbEKH7ubN30EwIOjKQw1rwC3Vv8ZCgaMoKQ==", "events"=>{"869"=>{"id"=>["1"]}, "870"=>{"id"=>["1"]}}, "controller"=>"events", "action"=>"swap", "carpool_id"=>"8"}

理想情况下,我会得到类似的东西。

events =&gt; {"id"=&gt;"869", "id"=&gt;"870"}

所以我可以轻松地遍历选定的事件列表并提取所有事件 ID。

【问题讨论】:

  • 看起来就像为我写代码。请展示您到目前为止尝试过的内容。 Stackoverflow 不是为我编写代码的资源。
  • 明白,正在努力,现在有点乱。很快就会更新。
  • 更新了一个非常接近的解决方案...也许你可以看看
  • 没关系,我想通了。如果您有兴趣,请参阅我发布的解决方案

标签: ruby-on-rails forms loops checkbox html-table


【解决方案1】:

解决方案:

<% if @events != nil %>
    <%= form_tag events_swap_path(@carpool) do %>
        <div><%= submit_tag 'Swap!' %></div>
        <% @events.each do |event| %>
        <tr>
            <td><%= event.driver.name%></td>
            <td><%= event.name%></td>
            <td><%= event.drop_off? ? "Drop Off At" : "Pick Up From" %></td>
            <td><%= event.location_name%></td>
            <td><%= event.is_game ? "Game" : "Not Game(event, practice)" %></td>
            <td><%= event.location_address %></td>
            <td><%= event.date ? event.date.strftime("%A, %d %b %Y %l:%M %p") : "Please Enter Details on TeamSnap!"%></td>
            <td>
                    <%= check_box_tag 'event_ids[]', event.id %>
            </td>
        </tr>
        <% end %>
    <% end %>
<% end %>

提交时的参数哈希:

{"commit"=>"Swap!", "utf8"=>"✓", "authenticity_token"=>"UrVdb0+iCUWYSGdmRpbMTp4Ax+/VkN55eCAsz6maHRDCP09sl5DDN7hDSO4mtF9fsaAgmCXze2YD+KIToxj1zA==", "event_ids"=>["869", "870"], "controller"=>"events", "action"=>"swap", "carpool_id"=>"8"}
(byebug) 

【讨论】:

    猜你喜欢
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    • 2016-10-17
    • 2021-04-29
    • 1970-01-01
    • 2021-05-15
    • 1970-01-01
    相关资源
    最近更新 更多