사용자가 검색 폼의 필드에서 여러 레코드를 선택할 수 있도록하려고합니다. 이 같은검색 양식에서 여러 레코드를 검색하려면 어떻게합니까?
뭔가 :
<%= 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
의 이름이라는 것을 알고 있기 때문에 방금했습니다. 이것이 효과가 있었다면, 나는 약간의 물건을 리팩토링 하였을 것이지만, 그렇지 않았다. 그래서 그것에 매달리지 마십시오.
는하지만 여전히 난 그냥 1 옵션을 전달하더라도 나는 여전히 오류, 오류를 또한 undefined method 'to_i'....
를 반환합니다.
합니다. 이웃의 ID를 얻으려면 이름에 대한 setter를 정의하고 해당 setter 메서드에서 이웃의 ID를 가져올 수 있습니다. – jvnill
몇 가지 코드 예제를 보여 주셔서 감사합니다. – marcamillion