ransack
を使用して、application.html.erbで検索フォームを作成しました。
検索結果を別のページに表示し、その表示されたものの並べ替えをしたいのですが上手くいきません。
セレクトボックスを使用すれば思い通りの動きをするのですが、link_to
を使用したいと思っています。原因は検索時のパラメータがないことだと考えているのですが調べてみても「テーブルのカラムでソートをする」ものしか見つけられず実現方法がわかりません。並べ替えの条件が計算式であったり、別テーブルのカラムなので、調べたものとは違うと考えています。
わかりづらい説明だとは思いますが、どなたかご教授いただけないでしょうか。
HTML
1<div> 2 <%= search_form_for @search, url: search_recipes_path do |f| %> 3 <div> 4 フリーワード検索 5 <%= f.text_field :title_or_body_cont_any, placeholder: "\uf002 料理・食材など", class: 'fa' %> 6 </div> 7 <div class="mt-2"> 8 <%= f.submit '検索', class: "button is-danger is-rounded is-small mt-1" %> 9 </div> 10 <div class="mt-3"> 11 表示順 12 <%= search_form_for @search, url: search_recipes_path, html: {method: :post} do |f| %> 13 <%= f.select( :sorts, { '選択してください': 'id desc', '人気順': 'favorites_count desc', '新着順': 'created_at desc', 'コメントの多い順': 'coment_count desc', '評価が高い順': 'star_count desc'}, {selected: params[:q][:sorts]}, {onchange: 'this.form.submit()'} ) %> 14 <% end %> 15 </div> 16 <% end %> 17</div>
上記のf.select
部分を下記のlink_to
で動かしたい
HTML
1<div> 2 <%= search_form_for @search, url: search_recipes_path do |f| %> 3 <div> 4 フリーワード検索 5 <%= f.text_field :title_or_body_cont_any, placeholder: "\uf002 料理・食材など", class: 'fa' %> 6 </div> 7 <div class="mt-2"> 8 <%= f.submit '検索', class: "button is-danger is-rounded is-small mt-1" %> 9 </div> 10 <div class="mt-3"> 11 <%= link_to '人気順', {:q=>{:sorts=>"favorites_count desc"}} %> 12 <%= link_to '新着順', {:q=>{:sorts=>"created_at desc"}} %> 13 <%= link_to 'コメント数順', {:q=>{:sorts=>"coment_count desc"}} %> 14 <%= link_to '高評価順', {:q=>{:sorts=>"star_count desc"}} %> 15 </div> 16 <% end %> 17</div>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。