我正在尝试使用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!但我得到另一个错误。知道如何处理这个问题吗?谢谢!
答案 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
中找到了