#ruby-on-rails #searchlogic
#ruby-on-rails #searchlogic
Вопрос:
Я уверен, что я что-то упускаю из виду, поскольку я впервые использую Searchlogic.
Всякий раз, когда я использую инструкцию типа Listing.city_like_or_state_like(params[:search])
в своем контроллере, Rails возвращает ошибку «Неопределенный метод». Я пытаюсь выполнить поиск по 2 полям в одной модели.
Однако, если я использую Listing.city_like(params[:search])
, все в полном порядке.
Я что-то здесь упускаю? Я думал, что OR условия могут быть объединены в цепочку с Searchlogic. Как я могу реализовать оператор OR?
Ответ №1:
Searchlogic поддерживает только один «оператор» для каждого вызова. Итак, что вы хотите сделать, это
Listing.city_or_state_like(params[:search])
Ответ №2:
Я думаю, вы можете использовать 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])
Я все же голосую за ответ Анобла: D