2

这是我在这里的第一个问题,经过数月的潜伏​​和吸收。所以我希望我能正确地做到这一点。

在从这个 Railscast了解 pg_search_scope 功能后,我一直试图让 pg_search 的多搜索功能在我的 Rails 3.2.3 应用程序中工作。我相信 pg_search 文档假定读者比我有更好的 Rails 工作知识。我只是无法从我找到的资源跳转到使用多搜索获取工作应用程序。任何帮助将非常感激。这是我的设置:

配置/初始化程序/pg_search.rb

PgSearch.multisearch_options = {
  :using => {
    :tsearch => {
      :dictionary => "english"
    },
    :trigram => {}
  },
  :ignoring => :accents
}

在视图中搜索表单

<%= form_tag articles_path, method: :get do %>
    <%= text_field_tag :query, params[:query], :class => "search-box" %>
    <%= submit_tag "Search This Site", name: nil, :class => "btn btn-search" %>
<% end %>

文章.rb

include PgSearch
multisearchable :against => [:title, :content]

def self.search(query)
  if query.present?
    search(query)
  else
    scoped
  end
end

文章控制器.rb

def index
  @articles = PgSearch.multisearch(params[:query])

  respond_to do |format|
    format.html # index.html.erb
    format.json { render json: @articles }
  end
end

搜索已知术语时,我没有得到任何搜索结果。我究竟做错了什么?

4

1 回答 1

1

看起来我的错误是@articles在我的控制器中使用变量而不是显式定义@pg_search_documents,这是我在我的视图中使用的(我完全忘记发布)。出于某种原因,我认为@articles = PgSearch.multisearch(params[:query])在我的控制器中使用会通过 pg_search 魔术酱将搜索结果附加到“@pg_search_documents”。

于 2012-05-14T12:28:43.873 回答