@mone_pi

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

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

No Answers yet.

Your answer might help someone💌