【发布时间】:2013-02-22 07:52:11
【问题描述】:
所以我尝试使用 this gem 和 simple_form 实现多个自动完成功能,但出现错误。
我试过了:
<%= f.input_field :neighborhood_id, collection: Neighborhood.order(:name), :url => autocomplete_neighborhood_name_searches_path, :as => :autocomplete, 'data-delimiter' => ',', :multiple => true, :class => "span8" %>
这是我得到的错误:
undefined method `to_i' for ["Alley Park, Madison"]:Array
在我的参数中,它在neighborhood_id 发送这个:
"search"=>{"neighborhood_id"=>["Alley Park, Madison"],
所以它甚至没有使用这些值的 ID。
有人有什么想法吗?
编辑 1:
在回答@jvnill 的问题时,我没有明确地在控制器中对params[:search] 做任何事情。搜索会创建一条新记录,并且正在搜索 listings。
在我的搜索控制器create 操作中,我只是这样做:
@search = Search.create!(params[:search])
然后我的search.rb(即搜索模型)有这个:
def listings
@listings ||= find_listings
end
private
def find_listings
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?
#truncated for brevity
listings
end
【问题讨论】:
-
你在加入Gemfile之后有没有执行
bundle。 -
是的。 gem 安装正确,因为我在其他地方的一些其他领域使用
autocomplete功能,它运行良好。此外,自动完成功能适用于该字段 - 只是多个功能不起作用。 -
能否在您使用
params[:search][:neighborhood_id]的地方包含部分控制器代码 -
@jvnill - 完成。更新了问题。
-
Search.create!(params[:search])使用来自参数的数组neighborhood_id。这就是导致您的错误的原因。你打算如何将多个邻域保存到数据库中?或者那是您要求的一部分?
标签: ruby-on-rails ruby-on-rails-3 autocomplete jquery-autocomplete