我确信我忽略了一些东西,因为这是我第一次使用Searchlogic。
每当我在控制器中使用Listing.city_like_or_state_like(params[:search])
之类的语句时,Rails会返回“未定义方法”错误。我正在尝试在同一个模型中搜索2个字段。
但是,如果我使用Listing.city_like(params[:search])
,一切都很好。
我在这里遗漏了什么吗?我认为OR条件可以与Searchlogic链接在一起。如何实现OR语句?
答案 0 :(得分:1)
Searchlogic每次调用仅支持一个“运算符”。所以你想要做的是
Listing.city_or_state_like(params[:search])
答案 1 :(得分:0)
我认为您可以使用named_scopes并将params直接传递给SearchLogic
<强>模型/ listing.rb 强>
class Listing < ActiveRecord::Base
named_scope :city_or_state_like, lambda{|*args| {
:conditions => ["city ILIKE ? OR state ILIKE ?", args[0], args[1] ]
}
}
end
<强>控制器/ listing_controller.rb 强>
#params for [:search][:city_or_state_like] = [city_var][state_var]
Listing.search(params[:search])
我正在投票给一个诺布尔的答案:D