【发布时间】: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 => {"id"=>"869", "id"=>"870"}
所以我可以轻松地遍历选定的事件列表并提取所有事件 ID。
【问题讨论】:
-
看起来就像为我写代码。请展示您到目前为止尝试过的内容。 Stackoverflow 不是为我编写代码的资源。
-
明白,正在努力,现在有点乱。很快就会更新。
-
更新了一个非常接近的解决方案...也许你可以看看
-
没关系,我想通了。如果您有兴趣,请参阅我发布的解决方案
标签: ruby-on-rails forms loops checkbox html-table