0

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

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

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

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

4

2 回答 2

1

Searchlogic 每次调用仅支持一个“操作员”。所以你想做的是

Listing.city_or_state_like(params[:search])
于 2011-05-04T03:25:26.087 回答
0

我认为您可以使用 named_scopes 并将参数直接传递给 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])

不过,我赞成 aNoble 的回答:D

于 2011-05-04T14:17:55.283 回答