지금은 레스토랑, 카테고리 및 항목의 세 가지 모델이 있습니다. 이 테이블에는 모두 name 속성이 있습니다. 3 번 모두에 액세스 할 수있는 메인 페이지에서 검색을 설정하고 싶습니다. 검색을 수행 할 때 레스토랑 이름, 카테고리 이름 및/또는 항목 이름이 검색 결과로 나타납니다.여러 모델에 pg_search 사용
레일 4 앱에서 pg_search를 사용하고 있습니다. https://github.com/Casecommons/pg_search
지금까지 보석을 번들로 묶어 다중 검색을 설정하고 이전을 실행했습니다. 다음과 같이 내 모델은 현재보고 : 정보 검색
<%= form_tag restaurants_path, method: :get do %>
<%= text_field_tag :query, params[:query], class: "search-box" %>
<%= submit_tag "Search", name: nil, class: "btn btn-search" %>
<% end %>
레스토랑 컨트롤러와
모형
class Restaurant < ActiveRecord::Base
has_many :items
validates :name, presence: true
validates :gg, presence: true
include PgSearch
multisearchable against: :name
end
class Category < ActiveRecord::Base
has_many :items
validates :name, presence: true
validates :gg, presence: true
include PgSearch
multisearchable against: :name
end
class Item < ActiveRecord::Base
belongs_to :restaurants
belongs_to :categories
validates :name, presence: true
validates :gg, presence: true
include PgSearch
multisearchable against: :name
end
VIEW
class RestaurantsController < ApplicationController
def index
@restaurants = PgSearch.multisearch(params[:q])
end
end
질문
- 컨트롤러가 멀티 검색 항목을 제대로 되돌려 놓고 있지 않습니다. 이것을 정확하게 쓰려면 어떻게해야합니까?
- 하나의보기에서 3 개의 검색 결과를 모두 구현하려는 경우 새 컨트롤러를 설정하거나 범주 및 항목을 레스토랑 컨트롤러에 추가해야합니까?
- 좋은 사례를 보내주십시오.