简单的rails搜索表单不起作用

时间:2016-03-05 08:11:57

标签: ruby-on-rails

我在rails中有一个非常简单,典型的搜索表单。输入一个字符串,如果有任何字符串匹配,它会检查该模型的列。几个星期前它工作得很好。我今天回来了,突然间不起作用。

这是我的代码。我的搜索表单:

<%= 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

在控制器代码中,puts“术语是#{term}每次打印正确的术语。所以我知道这是正确的选择。只是,当我搜索某些东西时,它不会返回正确的结果。这是我终端的截图:

enter image description here

在终端中的“Lesrésultatssont”意味着“结果是......”然后是空的,因为它什么都不返回。这可能有什么问题?

2 个答案:

答案 0 :(得分:1)

为什么不执行降低(?)和search_term.downcase以确保其不区分大小写?

答案 1 :(得分:1)

您的代码目前正在搜索LIKE '%term'(字符串必须以字词结尾)

您可能需要搜索LIKE '%term%'(字符串必须包含术语)

只需添加%:

where("name LIKE ?", "%#{search_term}%")