2016-01-14 3 views
0

я пытаюсь сделать расширенный поиск в моих рельсах приложении, но у меня возникают некоторые проблемы с пустым ParamsSearchkick: Поиск несколько конкретных полей в одном запросе

Класса продуктом < ActiveRecord :: Base searchkick

, когда я заполнить поиск и размер поля Everyting работает, но если я не оставить размер поля пустым ничего отображаться в результатах ...

вероятно, я делаю что-то глупое

я сделал это работать с кучей МСФ:

def index 

if params[:search].present? 
    if params[:size].present? 
    @products = Product.search params[:search], where: {size: params[:size]} 
    else 
    @products = Product.search params[:search] 
    end  
else 
    if params[:size].present? 
    @products = Product.search "*", where: {size: params[:size]} 
    else 
    @products = Product.search "*" 
    end 

end 

, но, вероятно, это еще не самое лучшее approuch, имея в виду, что я буду искать, по крайней мере 5 других областях ...

поиск, размер, марка, Цвет, Store.state, цена, рейтинг и т.д. ...

извините за мой английский, я надеюсь, что вы, ребята, понять мой вопрос и получить в состоянии помочь мне ..

ответ

0

моя быть чем-л:

... 
search_condition = params[:search] || '*' 
where_conditions = params.slice(:size, :brand, :color, ...) 

@products = if where_conditions.any? 
    Product.search search_condition, where: where_conditions 
else 
    Product.search search_condition 
end 
+0

Благодаря человеку, но не работает, получить эту ошибку: неизвестно, где оператор и мои PARAMS выглядит следующим образом ... "размер" => { "идентификатор "=>" M ", а не" size "=> {" M " – user1684409

Смежные вопросы