现在我有三种型号:餐厅,类别和商品。所有这些表都有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
问题
答案 0 :(得分:3)
运行迁移时,将创建一个名为pg_search_documents的新表。那是pg_search将要查询的表。
您很可能在该表中没有任何数据时遇到问题。文档说&#34;如果此模型已有现有记录,则需要重新索引此模型以将现有记录放入pg_search_documents表中。请参阅下面的重建任务。&#34;
您想参考文档的这一部分:https://github.com/Casecommons/pg_search#rebuilding-search-documents-for-a-given-class