2016-08-02 4 views
5

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

filter_text=params[:filter_search] 
@outputs = Output.where("name LIKE '%#{filter_text}%'").order("name ASC") 
+0

у вас есть какое-либо значение в Params [: filter_search] –

+0

проверки случае значения, которое вы передаете и значение в PSQL –

+0

есть какая-либо запись, соответствовать этому критерию? – Alfie

ответ

3

Если вы используете драгоценный камень ransack, он позволит вам использовать простые методы для search. Использование ransack, вам нужно будет только сделать это:

@outputs = Output.search(name_cont: params[:filter_search]).result.order("name ASC") 
7

Попробуйте это:

filter_text=params[:filter_search] 
    @outputs = Output.where("name LIKE ?","%#{filter_text}%").order("name ASC") 
+1

Или как некоторые формулируют ** Пожалуйста, для любви к Богу, используйте переменные связывания ** - Я надеялся, что инъекция SQL умерла 10 лет назад ... – Falco

3

Если вы собираются на поиск без учета регистра идти ILIKE

filter_text = params[:filter_search] 
@outputs = Output.where("name ILIKE ?", "'%#{filter_text}%'").order("name ASC") 
3

Вместо:

filter_text=params[:filter_search] 
@outputs = Output.where("name LIKE '%#{filter_text}%'").order("name ASC") 

Попробуйте следующее:

filter_text=params[:filter_search] 
@outputs = Output.where(["name LIKE ?", "%#{filter_text}%"]).order("name ASC") 
1

Один простой способ поиска является использование Ransack. Это обеспечивает эффективный механизм поиска.

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