我想让用户能够在搜索表单上的字段中选择多个记录。如何在搜索表单中搜索多条记录?
事情是这样的:
<%= f.input_field :neighborhood_id, collection: Neighborhood.order(:name), :url => autocomplete_neighborhood_name_searches_path, :as => :autocomplete, 'data-delimiter' => ',', :multiple => true, :class => "span8" %>
将其发送到我的search
模式是这样的:@search = Search.create!(params[:search])
这就是Search.rb
模式确实与它:
key = "%#{keywords}%"
listings = Listing.order(:headline)
listings = listings.includes(:neighborhood).where("listings.headline like ? or neighborhoods.name like ?", key, key) if keywords.present?
listings = listings.where(neighborhood_id: neighborhood_id) if neighborhood_id.present?
listings
的问题是这只是接受1 neighborhood_id
,所以我选择多个对象时出现此错误:
undefined method `to_i' for ["Alley Park, Madison"]:Array
其中Alley Park
和Madison
是2个邻域的名称,而不是ID。
那么,我该如何得到这个工作?
谢谢。
编辑1
这个问题似乎不在的params[:search]
本身查找,而是在形式输入到条目的阵列的转换。我试图改变搜索的方法是这样的:
listings = listings.includes(:neighborhood).where("neighborhoods.name like ?", neighborhood_id) if neighborhood_id.present?
不要被挂了,我找了neighborhood.name
并传入neighborhood_id
的事实。我只是这么做的,因为我知道字段neighborhood_id
的参数实际上是neighborhood
的名称。如果这有效,我会重构一些东西,但事实并非如此。所以不要挂在那上面。
但仍返回错误undefined method 'to_i'....
而且,我仍然得到这个错误,即使我只是传递1个选项。
您可以通过添加搜索和邻里之间的连接表通过它去。要获得社区的ID,您可以为名称定义一个setter,并使用该setter方法获取社区的ID。 – jvnill 2013-02-21 11:38:22
小心向我展示一些代码示例? – marcamillion 2013-02-21 11:43:45