Rails:搜索多个属性

时间:2013-08-14 16:43:42

标签: ruby-on-rails

我设法构建了一个简单的搜索模型,并且有四个可以搜索的属性;姓名,年龄,地点和性别。我遇到的问题是我似乎无法找到正确的代码来搜索多个属性。

例如,搜索“adam”应生成名为adam的所有用户,而搜索london应显示来自london的所有用户。我只能单独搜索一个属性(名称),所以如果我输入“london”,它会显示一个空白的结果页面。

/people/index.html.erb (搜索表单)

<%= form_tag people_path, :method => 'get'  do %>
  <%= text_field_tag :search, params[:search]%>
  <%= submit_tag "Search" %>
<% end %>

模型/ person.rb

class Person < ActiveRecord::Base
  attr_accessible :age, :gender, :location, :name
  def self.search(search, id)
    if search
      where(['name LIKE ?', "%#{search}%"]) 
    else  
      scoped
    end
  end
end

people_controller.rb

def index
  @people = Person.search(params[:search], params[:id])
end

2 个答案:

答案 0 :(得分:1)

以下代码运行良好。

where('name LIKE ? OR location LIKE ?', "%#{search}%","%#{search}%")

@meagar,我无法理解这段简单的代码“是否超出了Stack Overflow的范围”。

答案 1 :(得分:0)

你可以查看Sunspot_rails gem来解决你的问题,它将Solr搜索引擎平台集成到Rails中,并且是Rails应用程序的战斗验证解决方案。在我公司的网站Fishtrip.cn,我们使用solr搜索House,Transportation零售商和旅游。对你的项目来说可能有点重,但如果正在寻找一个强大的解决方案,那么Sunspot绝对会是其中之一。