Я пытаюсь разрешить пользователю выбирать несколько записей в поле в форме поиска.Как найти несколько записей в форме поиска?
Что-то вроде этого:
<%= 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 кварталов, а не идентификаторы.
Так как я могу заставить это работать?
Спасибо.
Редактировать 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 вариант.
вы можете пройти через него, добавив таблицы объединения между поиском и окрестностями. для получения идентификаторов окрестностей вы можете определить сеттер для имен и получить идентификаторы окрестности по этому методу setter. – jvnill
Помогите показать мне пример с кодом? – marcamillion