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

发布于 2024-11-05 02:22:47 字数 293 浏览 0 评论 0原文

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

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

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

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

I'm sure that I'm overlooking something since this is my first time using Searchlogic.

Whenever I use a statement like Listing.city_like_or_state_like(params[:search]) in my controller, Rails returns an "Undefined Method" error. I'm trying to search 2 fields within the same model.

However, if I use Listing.city_like(params[:search]) everything is totally fine.

Am I missing something here? I thought OR conditions could be chained together with Searchlogic. How can I implement an OR statement?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

2024-11-12 02:22:47

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

Listing.city_or_state_like(params[:search])

Searchlogic only supports one "operator" per call. So what you want to do is

Listing.city_or_state_like(params[:search])
沦落红尘 2024-11-12 02:22:47

我认为你可以使用named_scopes并将参数直接传递给SearchLogic

models/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

controllers/listing_controller.rb

#params for [:search][:city_or_state_like] = [city_var][state_var]
    Listing.search(params[:search])

不过,我对aNoble的答案投了赞成票:D

I think you can use named_scopes and pass the params straight to SearchLogic

models/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

controllers/listing_controller.rb

#params for [:search][:city_or_state_like] = [city_var][state_var]
    Listing.search(params[:search])

I'm up-voting aNoble's answer though :D

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文