我想讓用戶能夠在搜索表單上的字段中選擇多個記錄。如何在搜索表單中搜索多條記錄?
事情是這樣的:
<%= 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