複数レコードの削除処理を改善 その4
チェックボックスに一括でチェック「あり」「なし」を指定できるようにしてみた。
操作リンクの追加
- 「すべて 選択 | 解除」のリンクをlink_to_remoteで作成した。
- :check_allパラメーターにtrue、falseを設定して、コントローラーのlist_updateメソッドを呼び出す。
- :check_allはハッシュのデフォルト値になる。
- この時、チェックボックスのフォームは送信しない。
<%#------ app/views/softwares/list.rhtml ------%> ...(途中省略)... <%= submit_to_remote "checked", "チェックした項目を削除する", :update => "list_update", :submit => "checked_with_store", :url => {:action => 'plural_destroy'}, :confirm => "本当に削除しますか?" %> <%= observe_form :checked, :update => "list_update", :submit => "checked_with_store", :url => {:action => 'list_update'} %> <%#------ 以下smallタグ内を追記 ------%> <small> すべて <%= link_to_remote "選択", :update => "list_update", :submit => "store", :url => {:action => 'list_update', :check_all => true} %> | <%= link_to_remote "解除", :update => "list_update", :submit => "store", :url => {:action => 'list_update', :check_all => false} %> </small> <%= end_form_tag %> </div> ...(途中省略)...
ハッシュのデフォルト値を設定する。
- コントローラーでは、ハッシュのデフォルト値を設定した。
- ハッシュには、本来チェックマーク付きのチェックボックスのidと値が入っているが、ここでは空のハッシュになる。
#------ app/controllers/softwares_controller.rb ------ ...(途中省略)... def set_pagination #パラメーターを取得 @keyword_id = params[:keyword] || (params[:software] && params[:software][:keyword_id]) || "%" @order_field = params[:order_field] || params[:store_order_field] || "id" @order_direction = params[:order_direction] || params[:store_order_direction] || "ASC" @search_word = params[:store_search_word] @page = params[:page] @checked_items = params[:checked_items] || {} @checked_items.default = params[:check_all] #<------追記 ...(途中省略)...
<%#------ app/views/models/softwares/_listd.rhtml ------%> <%= check_box_tag "checked_items[#{listd.id}]", listd.id, @checked_items[listd.id.to_s] %>
以上で、一括削除の機能追加は、ひとまず完了。現在の見た目はこんな感じだ。