私はついにpg_searchのマルチサーチ機能を実装する方法を理解しました。しかし、検索用語を含むさまざまな記事やよくある質問へのリンクを表示する、使用可能な検索結果ページを作成するのに問題があります。Rails3.2.3を使用した非常に基本的なセットアップです。
モデル:
両方とも「Title」属性と「Content」属性を持つArticlesモデルとFaqsモデルがあり、両方のモデルにこのコードがあります。
include PgSearch
multisearchable :against => [:title, :content]
検索フォームビューコード:
検索フォームは、すべてを「結果」と呼ばれるコントローラーに渡します。
<%= form_tag result_index_path, method: :get do %>
<%= text_field_tag :query, params[:query] %>
<%= submit_tag "GO", name: nil %>
<% end %>
結果コントローラー:
class ResultController < ApplicationController
def index
@pg_search_documents = PgSearch.multisearch(params[:query])
end
end
見つかった各結果のタイトルと、そのアイテムへのリンクを表示する検索結果ページを作成したいと思います。'class'属性を@pg_search_documentsから引き出す方法を理解しました。私の考えは、結果ページで次のようなことをすることです。
<ul>
<% @pg_search_documents.each do |pg_search_document| %>
<li><%= link_to pg_search_document.searchable.title, "../#{pg_search_document.searchable.class}/#{pg_search_document.searchable.id}" %></li>
<% end %>
</ul>
このコードが生成するリンクの例は次のとおりhttp://localhost/Article/3
です。「pg_search_document.searchable.class」を小文字にして複数形にする方法を理解できれば、家は自由になります。モデルとコントローラーでさまざまなメソッドを書いてみて、ヘルパーを書いてみました。しかし、これは私のRailsスキルが私を失敗させるところです。
助言がありますか?これを達成するためのよりエレガントな方法を知っている人はいますか?任意のアイデア/提案は非常に高く評価されています。