我有一個非常簡單,典型的軌道搜索表單。輸入一個字符串,如果有任何字符串匹配它,它將檢查該模型的列。幾周前它工作得很好。我今天回來,突然不起作用。簡單的軌道搜索表單不工作
這是我的代碼。我的搜索形式:
<%= form_tag("/search/products", method: "get") do %>
<%= label_tag(:q, "Search for:") %>
<%= text_field_tag(:q) %>
<%= submit_tag("Search") %>
<% end %>
我的控制器:
def search
term = params[:q]
puts "the term is #{term}"
@resultats = Product.search_products(term)
end
在我的模型中,search_products方法:
def self.search_products(search_term)
if search_term == ""
return []
else
where("name LIKE ?", "%#{search_term}")
end
end
在控制器代碼
,看跌期權「一詞是#{項}每次都打印正確的術語,所以我知道正確的拾取正確,只是當我搜索某些東西時,它不會返回正確的結果,下面是我的終端的屏幕截圖:
「萊斯résultatsSONT」在終端的意思是「結果是......」,然後空的,因爲它沒有返回。這裏有什麼可能是錯的?
你確定你確實有記錄以'second'結尾(區分大小寫!)如果您希望能夠搜索單詞的開頭並且不區分大小寫,則應該將您的查詢改爲'where(「name ILIKE?」,「%# {search_term}%「)' – panmari
另外,由於它是直接從互聯網上檢索的參數,因此您應該使用[sanitize_sql_like](http://edgeapi.rubyonrails.org/classes/ActiveRecord/Sanitization/ClassMethods.html#方法-i-sanitize_sql_like) – panmari
哦,也許這是問題所在。我有記錄,開始與「秒」,但沒有結束與第二。我會創建一些新記錄,看看它是否在背後 – joey