如何找到类似的值搜索

时间:2014-05-27 13:47:54

标签: ruby-on-rails search ruby-on-rails-4

如何搜索类似的值?例如,我找到名字" Allan"。但我想要那个搜索视图" Allan,Allen,Allin,Allister"。相同的三个字符 - 三个第一个符号

def self.search(search)
    if search
      find(:all, :conditions => ['your_name LIKE ?', "%#{search}%"])
    end
end

1 个答案:

答案 0 :(得分:1)

如果您的规则只是“以相同的三个字符开头”,那么您几乎就在那里 - 只需从搜索条件中删除第一个%,然后指定前三个字符。

find(:all, :conditions => ['your_name LIKE ?', "#{search[0..2]}%"])

%是一个通配符,因此“%All%”将匹配“Ball”和“Ally”,而“All%”将匹配“Ally”但不匹配“Ball”。

编辑 - 在控制器中设置变量并在视图中使用它的演练。假设有问题的模型是Foo。关于视图代码,我做出了很多武断的决定。

控制器中的

@matching = Foo.find_all_by_your_name(params[:name])
@similar = Foo.search(params[:name]) - @matching

在视图中

<p>Main Search:</p>
<%= @matching.each do |foo| %>
  <!-- render the foo partial here -->
<% end %>

<% if @similar.size > 0 %>
  <p>Main Search:</p>
  <%= @similar.each do |foo| %>
    <!-- render the foo partial here -->
  <% end %>
<% end %>