一覧ページで検索機能と表示件数切替機能を実装したのですが、
現在の状態だと検索を行った後に表示切替を行うと、検索結果がリセットされてしまいます。
検索の結果を保持したままで表示切替を行うにはどうすればいいのかを知りたいです。
ruby
1#controller 2 3 def index 4 @area = Area.find_by(id: @q.area_id_eq) 5 products = @q.result(distinct: true).enable_products.order( created_at: :desc ) 6 @product_cnts = products.count 7 @products = products.page(params[:page]).per(9) 8 @page = 9 9 end
<!-- index.html.erb --> <div class ="search_zone" > <%= search_form_for @q, url: products_path do |f| %> <%= f.search_field :name_or_address_or_station_or_area_id_cont %> <%= f.submit "さがす", class: "searchbtn" %> <% end %> </div> <div id="products-box"> <%= render :partial => "numberdisplay", :locals => { action: "/products/index/"} %> <!-- 表示件数切り替え --> <h2>画像一覧:<%= @product_cnts %></span> 件</h2> <%= link_to product_path(id: product.id) do %> <%= render :partial => "productbox", :locals => { img_class: "", product: product, building_name_class: "", current_mosaic: ""} %> <% end %> <%= paginate(@products) %> </div>
上のindex.html.erb内search_zoneで検索した結果を保持した上で表示件数切替を行いたいのですが、
現状では表示件数切替を行うと、検索結果がリセットされてしまいます。
パーシャルのnumberdisplayは以下です。
<!-- _numberdisplay.html.erb --> <form action=<%= action %> method="get" id="number-display-form" class="number-display-form"> <p>表示件数:</p> <select id="number" class="number" required> <option value="" disabled="disabled" selected> 選択してください </option> <option value="9">9件</option> <option value="27">27件</option> <option value="54">54件</option> </select> <input type='submit' value='切替'> </form>
javascript
1#common.js 2 3 window.addEventListener('DOMContentLoaded', function(e){ 4 document.querySelector('#number-display-form').addEventListener('submit',function(e){ 5 var t=e.target; 6 e.preventDefault(); 7 var url=t.getAttribute('action')+t.querySelector('select').value; 8 location.href=url; 9 }); 10 });
ここから別のコントローラに行って先程のindex.html.erbをrenderします。
ruby
1routes.rb 2get 'products/index/:per' => 'products#index_page', as: 'products_index_page'
ruby
1 2 def index_page 3 @page = params[:per] 4 products = @q.result(distinct: true).enable_products.order( created_at: :desc ) 5 @product_cnts = products.count 6 @products = products.page(params[:page]).per(params[:per]) 7 @area = Area.find_by(id: @q.area_id_eq) 8 @areas = Area.all 9 render("index") 10 end
長くなってしまって大変申し訳ありません。
この流れの中で、どのように検索結果を渡せばよいのでしょうか?
なにかご教示していただけることがあれば、何卒よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/29 05:57
2018/10/29 05:58
2018/10/29 08:14
2018/10/29 09:07 編集
2018/10/29 12:10
2018/10/29 12:13 編集
2018/10/30 02:22
2018/10/30 03:17