如何搜索类似的值?例如,我找到名字" Allan"。但我想要那个搜索视图" Allan,Allen,Allin,Allister"。相同的三个字符 - 三个第一个符号
def self.search(search)
if search
find(:all, :conditions => ['your_name LIKE ?', "%#{search}%"])
end
end
答案 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 %>