ransackの検索結果をカラム順に表示したい
解決したいこと
以下のransackの検索結果をnameで一致する方を上に表示するようにしたいです
何か良い方法ありますでしょうか??
(検索結果をname→name_contの順番に表示)
Product.preload(:company).
ransack(name_or_company_name_cont_any: keywords, company_id_not_null: true).
result.
order(:name).
map { |p| ["#{p.name} (#{p.company.name})", p.id] }
例
keywords = "カメラ"で検索
・検索結果(商品名で並び替え)
アクションカメラ 4K/50FPS APEMAN A100 (APEMAN)
クーポン (株式会社ビックカメラ)
水中カメラ (ソニーマーケティング株式会社)
洗濯機 (株式会社ビックカメラ)
↓こうしたい
・検索結果 (商品名→会社名で並び替え)
アクションカメラ 4K/50FPS APEMAN A100 (APEMAN)
水中カメラ (ソニーマーケティング株式会社)
クーポン (株式会社ビックカメラ)
洗濯機 (株式会社ビックカメラ)
自分で試したこと
分割してやるしか思いつきませんでした、、、
product_list_name = Product.preload(:company).
ransack(name_cont_any: keywords, company_id_not_null: true).
result.
order(:name).
map(&method(:format_option))
product_list_company_name = Product.preload(:company).
ransack(company_name_cont_any: keywords, company_id_not_null: true).
result.
order(:name).
map(&method(:format_option))
[*product_list_name, *product_list_company_name].uniq
0 likes