2

我对 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。这是我需要为数据库配置的东西吗?如果需要,在哪里?

顺便说一句,我在 URL 中看到以下参数,包括带有不可打印字符的 UTF8 哈希(在浏览器地址栏中,在 html 中,它似乎显示为复选标志),我不知道它来自哪里。这种 UTF8 编码会是问题的根源吗?

?utf8=✓&amp;search=
4

2 回答 2

1
find(:all, conditions: ['name iLIKE ?', "%#{search}%"])

引用 postgres 文档:

根据活动区域设置,可以使用关键字 ILIKE 代替 LIKE 以使匹配不区分大小写。这不在 SQL 标准中,而是 PostgreSQL 扩展。

于 2013-04-10T08:27:09.617 回答
0

这是一个类似的线程,

如何使用 LIKE 通配符在列中搜索(不区分大小写)?

这不是一个真正的 Rails 解决方案。我建议您尝试使用元搜索gem 来搜索具有复杂功能的搜索。

于 2013-04-10T06:11:56.657 回答