複数レコードの削除処理を改善 その2
一括削除についても、ajaxで送信してみた。
app/views/softwares/list.rhtmlの修正
- submit_tagを、submit_to_remoteに変更した。
- チェックボックスの値と、_list_form.rhtmlの値を送信するため、id="checked_with_store"を設定した。
<%#------ app/views/softwares/list.rhtml ------%> <div id="checked_with_store"><%#<------ フィルターや並べ替えの条件を含めて送信する範囲のid設定 %> <%= render :partial => 'models/softwares/list_form' %> <%= start_form_tag :action => 'plural_destroy' %> <table class="confirm" width=100%> <%= render :partial => 'models/softwares/listh' %> <% if !@softwares.empty? %> <%= render :partial => 'models/softwares/listd', :collection => @softwares %> <% else %> <tr><td colspan="6">レコードはありません。</td></tr> <% end %> <%= render :partial => 'models/softwares/list_page' %> </table> <%# submit_tagをsubmit_to_remoteに変更した。 %> <%#= submit_tag "チェックした項目を削除する", :onclick=>"return confirm('本当に削除しますか?');" %> <%= submit_to_remote "checked", "チェックした項目を削除する", :update => "list_update", :submit => "checked_with_store", :url => {:action => 'plural_destroy'}, :confirm => "本当に削除しますか?" %> <%= end_form_tag %> </div>
app/views/layouts/softwares.rhtmlへの追記
- 削除処理に対するメッセージを表示するため、ajax更新の範囲id="list_update"を、レイアウトファイル全体に広げてしまった。(つまり、ページ全体が更新されることになる。)
<%#------ app/views/layouts/softwares.rhtml ------%> <div id="list_update"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Softwares: <%= controller.action_name %></title> <%= stylesheet_link_tag 'scaffold' %> <%= javascript_include_tag :defaults %> </head> <% store_location %> <body> <%# render :partial=>"menu"だと、"softwares/menu"の描画になる %> <%= render :partial=>"layouts/menu" %> <%= render :partial=>"common/notice" if flash[:notice] -%> <%= render :partial=>"common/error" if flash[:error] -%> <%= render :partial=>"layouts/flash" %> <%= @content_for_layout %> </body> </html> </div>
app/controllers/softwares_controller.rbへの追記
- 一括削除後のページ番号を保持するため、コントローラーに@page = params[:page]を追記した。
#------ 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] ...(途中省略)...
app/views/models/softwares/_list_form.rhtmlへの追記
- @pageをhidden_field_tagに書き込んで、現在のページ番号を保持する。
<%#------ app/views/models/softwares/_list_form.rhtml ------%> ...(途中省略)... <%= hidden_field_tag("page", @page) %> ...(途中省略)...