13
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

check_boxで複数のデータをまとめて削除する方法

Posted at

##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

13
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?