前提
ransackを使用し、1ページで2つのインスタンスクラスに対して検索できるようにしたいです。
実現したいこと
マイリストボタンを押して、検索するとマイリスト一覧の検索ができ、
他リストボタンを押して、検索すると他リスト一覧での検索ができるようにしたいです。
現状は、それぞれの一覧は表示できますが、検索ボタンを押すとどちらもマイリストでの絞り込みの結果が返ってきます。
該当のソースコード
r.rb
1# params[:set]は、他リスト、マイリストボタン用のクエリ文字の場合分けです。 2 3 def index 4 if params[:set] == "other_list" 5 @other_list = Restaurant.where.not(user_id: current_user.id).ransack(params[:other], search_key: :other) 6 @restaurants = @other_list.result(distinct: true) 7 elsif params[:set] == "my_list" 8 @my_list = current_user.restaurants.ransack(params[:q]) 9 @restaurants = @my_list.result(distinct: true) 10 else 11 12 @other_list= Restaurant.where.not(user_id: current_user.id).ransack(params[:other], search_key: :other) 13 @restaurants = @other_list.result(distinct: true) 14 15 @my_list = current_user.restaurants.ransack(params[:q]) 16 @restaurants = @my_list.result(distinct: true) 17 end 18 @random_select = @restaurants.shuffle.first 19 end
検索する↓このページは、部分ページです。
r.html.erb
1<% if @restaurants.find_by(user_id: current_user.id) == nil %> 2 <%= search_form_for @other_list, as: :other do |f| %> 3 <%= f.search_field :rst_name_cont, class: "input input-bordered w-full max-w-xs" %> 4 <%= f.submit class: 'btn btn-success' %> 5 <% end %> 6<% else %> 7 <%= search_form_for @my_list do |f| %> 8 <%= f.search_field :rst_name_cont, class: "input input-bordered w-full max-w-xs" %> 9 <%= f.submit class: 'btn' %> 10 <% end %> 11<% end %>
試したこと
@my_list は、params[:q]を受け取り、
@other_listは、params[:other], search_key: :otherのように受け取るキーを変える設定をしましたが、うまくいきませんでした。
受け取るキーを変更すると場合分けできるかと思いましたが、キー変更というのは単にデフォルトのq
を別に変えれるというだけでしょうか。。
回答1件
あなたの回答
tips
プレビュー