在视图中:
= check_Box_tag 'user_message_ids[]',user_message.id,false = link_to "<button>Bulk Delete</button>".html_safe,profile_message_path(user_message),:id => 'user_message_ids',:confirm => "Are you sure?",:method => :delete
我可以将提交按钮放在任何一个区域.
像这个:
= form_tag checked_messages_path do = check_Box_tag 'user_message_ids[]',false --------objects--------------------------------------------- --------objects--------------------------------------------- --------objects--------------------------------------------- --------objects--------------------------------------------- = submit_tag "Delete Checked"
解决方法
<% form_tag delete_mutiple_items_path do %> <table> <thead> <tr> <th></th> </tr> </thead> <tbody> <% @items.each do |item| %> <tr> <td><%= check_Box_tag "items[]",item.id %></td> </tr> <% end %> </tbody> </table> <%= submit_tag "delete Checked" %> <% end %>
它会将一组id传递给控制器,例如{“item_ids []”=> [“1”,“2”,“3”]}
所以你可以用这些ID做任何事情
仅供参考:http://railscasts.com/episodes/165-edit-multiple?view=asciicast
更新(One Small Gotcha)
从这里:http://railscasts.com/episodes/17-habtm-checkboxes?view=asciicast
There is still one small problem with our update method. If we uncheck all of the checkBoxes to remove a product from all categories then the update fails to remove any categories the product was in. This is because a checkBox on an HTML form will not have its value sent back if it is unchecked and therefore no
category_ids
will appear in the product’s parameters hash,meaning that thecategory_ids
are not updated.To fix this we have to modify our products controller to set the
category_ids
parameter to be an empty array if it is not passed to the update action. We can do this usingRuby's ||=
operator and add the following like at the top of the update action.
params[:product][:category_ids] ||= []
This will ensure that if none of the checkBoxes are checked then the product is updated correctly so that it is in no categories.