簡體   English   中英

將pg_search用於多個模型

[英]Using pg_search for multiple models

現在我有三個模型:餐廳,類別和項目。 所有這些表都有name的屬性。 我想在可以訪問所有3的主頁面上設置搜索。搜索將在搜索時返回餐館名稱,類別名稱和/或項目名稱。

我在Rails 4應用程序中使用pg_search。 https://github.com/Casecommons/pg_search

到目前為止,我已經捆綁了gem,設置了多搜索並運行了遷移。 我的模型目前看起來如下:

楷模

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

查看搜索框

<%= 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 RestaurantsController < ApplicationController

  def index
    @restaurants = PgSearch.multisearch( params[:q] )
  end

end

質詢

  • 控制器沒有正確返回多個項目。 我該怎么寫得正確?
  • 如果我想在一個視圖上實現所有三個搜索結果,我應該設置一個新的控制器還是將類別和項目添加到餐廳控制器中?
  • 請發送任何好的例子。

運行遷移時,將創建一個名為pg_search_documents的新表。 這是pg_search將查詢的表。

很可能您在該表中沒有任何數據時遇到問題。 文檔說“如果此模型已有現有記錄,則需要重新索引此模型以將現有記錄放入pg_search_documents表中。請參閱下面的重建任務。”

您想參考文檔的這一部分: https//github.com/Casecommons/pg_search#rebuilding-search-documents-for-a-given-class

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM