2016-08-02 16 views
5

Mam problem w poszukiwaniu rekordów z PostgreSQL z danego słowa kluczowego wyszukiwania, ale nie rekord jest tutaj wyświetlania jest kodWynik wyszukiwania nie wyświetla

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

masz żadnej wartości w params [: filter_search] są –

+0

wyboru dla przypadku wartości jesteś przechodzącej a wartością w psql –

+0

jakieś rekordy pasuje do tego kryterium? – Alfie

Odpowiedz

3

Jeśli użyjesz gem ransack, to pozwoli ci to użyć prostych metod do search. Korzystanie ransack, trzeba tylko, aby to zrobić:

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

Spróbuj tego:

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

Lub jak niektórzy sformułowali ** Proszę o miłość boga, użyj zmiennych wiążących ** - Miałem nadzieję, że iniekcję SQL zmarł 10 lat temu ... – Falco

3

Jeśli idą za sprawy niewrażliwego wyszukiwania przejdź do ILIKE

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

zamiast:

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

Spróbuj wykonać następujące czynności:

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

Prostym sposobem wyszukiwania jest wykorzystanie Ransack. Co zapewnia wydajny mechanizm wyszukiwania.

Powiązane problemy