我试图找出如何使用pg_search_gem和pg_search_scope多个参数传递给我的搜索pg_search高级搜索的
这是我简单的搜索
include PgSearch
pg_search_scope :simple_search, against: [:title, :description], using: { tsearch: { dictionary: "spanish"} }
def self.search(search)
if search.present?
simple_search(search)
else
find(:all)
end
end
但现在我正在努力做这样的事情
include PgSearch
pg_search_scope :simple_search, against: [:title, :place, :category], using: { tsearch: { dictionary: "spanish"} }
def self.searchadv(title, place, category)
simple_search(:title => title, :place => place, :category => category)
end
我知道这是完全错误的,但这是我的询问。
UPDATE
这里是新代码
pg_search_scope :advance_search, lambda {|*args, query|
return {:against => args,
:query => query,
using: { tsearch: { dictionary: "spanish"} } }
}
def self.searchadv(query, title, place, category)
advance_search(:all, :title => title, :place => place, :category => category)
end
仍然没有工作。但几乎完成了!我得到这个错误:
wrong number of arguments (3 for 4)
完成,但现在我又出现了另一个问题。我更新了我的代码,请你检查一下。 – Jean
你没有将搜索查询传递给searchadv方法,该方法反过来应该将它传递给'advance_search'作用域 – mihai
我更新了代码,但是现在我得到这个错误:参数的错误数量(3个为4个) – Jean