Searchlogic OR条件导致未定义的方法

时间:2011-05-04 01:11:11

标签: ruby-on-rails searchlogic

我确信我忽略了一些东西,因为这是我第一次使用Searchlogic。

每当我在控制器中使用Listing.city_like_or_state_like(params[:search])之类的语句时,Rails会返回“未定义方法”错误。我正在尝试在同一个模型中搜索2个字段。

但是,如果我使用Listing.city_like(params[:search]),一切都很好。

我在这里遗漏了什么吗?我认为OR条件可以与Searchlogic链接在一起。如何实现OR语句?

2 个答案:

答案 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