我有一个非常简单,典型的轨道搜索表单。输入一个字符串,如果有任何字符串匹配它,它将检查该模型的列。几周前它工作得很好。我今天回来,突然不起作用。简单的轨道搜索表单不工作
这是我的代码。我的搜索形式:
<%= 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