Rails,使用Ransack gem搜索,downcase一个字符串

时间:2016-07-10 05:38:06

标签: ruby-on-rails ruby rubygems

我正在尝试使用ransack为我的商店写一个搜索表单。目前,我可以使用name_or_address_cont选项进行搜索,该选项在地址名称OR中看起来是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!但我得到另一个错误。知道如何处理这个问题吗?谢谢!

1 个答案:

答案 0 :(得分:0)

有两个错误......第一个我在文档中找到了如何解决他们有一个full_name link的例子

看起来像

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('')替换加入''。在此issue

中找到了