##index上でcheck_box_tagを用いてデータを複数まとめて削除する方法をまとめます。
今回はデータの一覧が表示されているindexで削除をしてみます。
index.html.slim
= form_tag({ controller: :regular_debit_accounts, action: :destroy_all },method: 'delete') do # form_tagは何も指定しないとcreateが実行されてしまうので、method等は指定してあげてください
- @regular_debit_accounts.each do |regular|
tr
td = check_box_tag "deletes[#{ regular.id }]", regular.id # checkしたものに対してidを持たせます
= submit_tag '一括削除!'
#htmlで確認してみると、check_box_tagでは例えば値がこのように入っています。
input type="checkbox" name="deletes[10]" id="deletes_10" value="10"
次にコントローラーで一括削除の処理
regular_debit_accounts_controller.rb
def destroy_all
checked_data = params[:deletes].keys # ここでcheckされたデータを受け取っています。
if RegularDebitAccount.destroy(checked_data)
redirect_to regular_debit_accounts_path
else
render action: 'index'
end
end
ルーティング=> index上で削除を実行するのでidとかは必要ありません
routes.rb
delete :regular_debit_accounts, to: 'regular_debit_accounts#destroy_all'
こちら参考にさせていただきました.
http://railsguides.jp/form_helpers.html
http://d.hatena.ne.jp/gedit/20090618/1245320340