2011-05-04 30 views
0

我確定我忽略了一些東西,因爲這是我第一次使用Searchlogic。Searchlogic OR條件導致未定義的方法

每當我在控制器中使用像Listing.city_like_or_state_like(params[:search])這樣的語句時,Rails將返回一個「Undefined Method」錯誤。我試圖在同一模型中搜索2個字段。

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

我在這裏錯過了什麼嗎?我認爲OR條件可以與Searchlogic鏈接在一起。我怎樣才能實現一個OR語句?

回答

1

Searchlogic每次只支持一個「運營商」。所以,你想要做的是

Listing.city_or_state_like(params[:search]) 
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]) 

雖然我是up-voting aNoble的回答:D

相關問題