簡體   English   中英

Rails,使用Ransack gem搜索,將字符串小寫

[英]Rails, search with Ransack gem, downcase a string

我正在嘗試使用ransack為我的商店編寫搜索表單。 目前,我可以使用name_or_address_cont選項進行搜索,該選項的名稱或地址看起來都為EITHER。 如果我在倫敦有一家阿迪達斯商店,而我鍵入阿迪達斯倫敦,那將沒有結果。 因此,我尋找了一種連接兩個屬性並通過新屬性進行搜索的方法。 我在一些舊帖子中發現的是以下代碼:

  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! 但我得到另一個錯誤。 任何想法如何處理這個問題? 謝謝!

有兩個錯誤...第一個錯誤是我在文檔中找到了如何修復full_name 鏈接的示例的方法。

看起來像

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

另外,似乎應將連接的''替換為Arel :: Nodes.build_quoted('')。 發現這個問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM