2016-08-02 120 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。這爲您提供了一個有效的搜索機制。