2

これは、何ヶ月にもわたって潜んで吸収した後、ここでの私の最初の質問です。だから私はこれを正しく行うことを願っています。

この Railscastから pg_search_scope 機能について学んだ後、Rails 3.2.3 アプリで pg_search のマルチサーチ機能を動作させようとしています。pg_search のドキュメントは、読者が私よりも Rails の実用的な知識を持っていることを前提としていると思います。見つけたリソースから、マルチサーチを使用して機能するアプリを取得するまでジャンプできませんでした。どんな助けでも大歓迎です。これが私のセットアップです:

config/initializers/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

article_controller.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 に答える