checkbox を一括選択させる link_to_remote
チェックボックスを一括選択させたり、一括解除させたりするリンクを作成してみました。
ちなみに、
<table> <tr> <td> <%= check_box_tag "del_ids[]", user.id %> </td> <td> <%= check_box_tag "hit_ids[]", user.id %> </td>
こんなかんじに各用途でチェックボックスがあるとき用
view 側
<div> 削除: <%= link_to_remote 'すべて選択', :url => {:action => "check_all", :aim => "del"} %> <%= link_to_remote '選択を解除', :url => {:action => "uncheck_all", :aim => "del"} %><br /> 当選: <%= link_to_remote 'すべて選択', :url => {:action => "check_all", :aim => "hit"} %> <%= link_to_remote '選択を解除', :url => {:action => "uncheck_all", :aim => "hit"} %> </div>
controller 側
# すべて選択 def check_all render :update do |p| p << <<-END boxes = document.getElementsByName('#{params[:aim]}_ids[]'); for(i = 0; i < boxes.length; i++){ boxes[i].checked = true; } END end end # 選択を解除 def uncheck_all render :update do |p| p << <<-END boxes = document.getElementsByName('#{params[:aim]}_ids[]'); for(i = 0; i < boxes.length; i++){ boxes[i].checked = false; } END end end
やっぱり Ajax は便利なんだろうなあ