2016-07-10 9 views
0

私はransackを使用して私の店の検索フォームを書こうとしています。現在、名前のORで表示されるname_or_address_contオプションを使用して検索できます。私がロンドンのアディダスショップを持っていて、私がAdidas Londonとタイプしても結果はないでしょう。そこで私は、2つの属性を連結して新しい属性で検索する方法を探しました。いくつかの古い記事には次のコードがあります:Rails、Ransack gemで検索、文字列をダッシュ​​ダウン

ransacker :search_name, :formatter => proc {|v| UnicodeUtils.downcase(v) } do |parent| 
    Arel::Nodes::NamedFunction.new('LOWER', 
     [Arel::Nodes::NamedFunction.new('concat_ws', [' ', parent.table[:name], parent.table[:address], parent.table[:id]])] 
    ) 
    end 

ショップの名前、住所、およびIDで検索するはずのものです。しかし、私が実行すると、UnicodeUtilsでエラーが発生します。私はそれをv.downcaseに変更しようとしました!しかし別のエラーが出ます。どのようにこの問題を処理するための任意のアイデア?ありがとうございました!

答えて

0

が...私は、彼らはまた

ransacker :full_name, formatter: proc { |v| v.mb_chars.downcase.to_s } do |parent| 
    Arel::Nodes::NamedFunction.new('LOWER', 
    [Arel::Nodes::NamedFunction.new('concat_ws', 
     [' ', parent.table[:first_name], parent.table[:last_name]])]) 
end 

のように見えますFULL_NAME link

のための例を持っているドキュメントに修正する方法を最初に見つかった2つのミスがあった、それが思われますjoin ''はArel :: Nodes.build_quoted( '')に置き換えてください。この中にこれが見つかりましたissue

+0

これは正しい答えですか? 「Adidas London」を検索したときに期待通りの結果を返していますか? – chipairon

+0

はい、あります:) –

関連する問題