2015-09-06 99 views
2

我有一個簡單的搜索功能,但是當我搜索名稱時,我需要輸入名稱完全相同,包括大寫和小寫。例如,如果我搜索「紅寶石」,名稱爲「紅寶石」它不會顯示結果在軌道上的紅寶石搜索(更改搜索字符串爲小寫)

視圖源代碼:

<div class="row center"> 
    <%= form_tag pages_home_path, :method => 'get' do %> 
    <%= text_field_tag :search, params[:search], :placeholder => "Search", :style => "text-align: center; font-size: 20px" %> 
    <button type="submit_tag" name="action" class="waves-effect waves-light btn">Search Tutorials</button> 
<%end%> 

控制器源碼:

def index 
@tutorials = Tutorial.search(params[:search]) 
end 

模型源代碼:

def self.search(search) 
if search 
    where(["name LIKE ?","%#{search}%"]) 
else 
    all 
end 

我該怎麼做,以便當用戶鍵入搜索名稱時,它顯示結果,即使它是大寫還是小寫?

回答

2

使用ILIKE代替LIKE。它會使查詢不區分大小寫。

+1

只適用於postgresql。 – mhutter

+1

我使用postgresql,非常感謝 – prolog12345

3

這個怎麼樣?

where(["LOWER(name) LIKE ?","%#{search.downcase}%"]) 
相關問題