我设法构建了一个简单的搜索模型,并且有四个可以搜索的属性;姓名,年龄,地点和性别。我遇到的问题是我似乎无法找到正确的代码来搜索多个属性。
例如,搜索“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
答案 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绝对会是其中之一。