我有一个用户对象列表,
<% @users.each do |user| %>
<tr>
<td><%= check_box_tag 'ids[]', user.id, false, :class => 'table-row-checkbox' %></td>
<td>
<%= link_to user.email, edit_user_path(user) %>
</td>
</tr>
<% end %>
我想创建一个链接删除并删除所有已检查的用户。
<%= link_to 'Delete', delete_user_path, method: :delete, data: { confirm: 'Are you sure?' }, class: "btn btn-danger" %>
如何将所有选中的复选框传递给destroy方法?
答案 0 :(得分:0)
您可以将复选框放在以下格式中:
<%= form_tag(delete_user_path,:id => 'form_id',) do %>
<% @users.each do |user| %>
<tr>
<td><%= check_box_tag 'ids[]', user.id, false, :class => 'table-row-checkbox' %></td>
<td>
<%= link_to user.email, edit_user_path(user) %>
</td>
</tr>
<% end %>
<%= submit_tag("Delete") %>
<% end %>
当按下提交按钮时,您将获得传递给控制器的参数中的ID:
"ids"=>["1", "2", "3"]
如果您不想提交按钮,那么您需要使用javascript / jquery:
<%= link_to 'submit', "#", :onclick => "$('#form_id').submit()" %>
现在你在控制器上的动作看起来像这样:
def delete
if request.post?
delete_ids = params[:ids].collect {|id| id.to_i} if params[:ids]
delete_ids.each do |id|
User.find(id).destroy
end
end
end