1

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

例如,搜索“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
4

2 回答 2

1

以下代码工作正常。

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

@meagar,我不明白那行简单的代码如何“超出了堆栈溢出的范围”。

于 2013-08-14T16:59:47.767 回答
0

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

于 2013-08-14T17:04:04.957 回答