我对rails很新,并且正在使用此搜索表单
<%= form_tag producer_path(@user), method: :get do %>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", name: nil %>
</p>
<% end %>
并在模型中使用SQL LIKE
def self.search(search)
if search
find(:all, conditions: ['name LIKE ?', "%#{search}%"])
else
find(:all)
end
end
我希望默认情况下这不区分大小写,但事实并非如此。我正在使用PostgreSQL 9.1。这是我需要为数据库配置的东西,如果是这样的话?
BTW我在URL中看到以下参数包括一个带有不可打印字符的UTF8哈希(在浏览器地址栏中,这里的html似乎显示为一个检查符号),我不知道它来自哪里对于。这个UTF8编码可能是问题的根源吗?
?utf8=✓&search=
答案 0 :(得分:1)
find(:all, conditions: ['name iLIKE ?', "%#{search}%"])
从postgres文档引用:
可以使用关键字ILIKE而不是LIKE来进行匹配 根据活动区域设置不区分大小写。这不在 SQL标准,但是PostgreSQL扩展。
答案 1 :(得分:0)
这是一个类似的主题,
How can I search (case-insensitive) in a column using LIKE wildcard?
这不是真正的铁路解决方案。我建议您尝试使用元搜索 gem来搜索具有复杂功能的内容。