现在我有三个模型:餐厅、类别和项目。所有这些表都有一个名称属性。我想在可以访问所有 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
问题
- 控制器没有正确取回多重搜索项。我该如何正确地写这个?
- 如果我想在一个视图上实现所有三个搜索结果,我应该设置一个新控制器还是将类别和项目也添加到餐厅控制器?
- 请发送任何好的例子。