4

我終於想出瞭如何實現pg_search的multisearch功能。但是我無法制作可用的搜索結果頁面,該頁面會顯示鏈接回到包含搜索條件的各種文章和常見問題解答。這是使用Rails 3.2.3一個非常基本的設置:如何使用包含指向結果的鏈接的pg_search multisearch創建搜索結果頁面?

型號:

我有一個文章和常見問題解答模式,既與「標題」和「內容」屬性,該代碼在這兩種模式:

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技能讓我失望的地方。

有什麼建議嗎?任何人都知道完成這個更優雅的方式?任何想法/建議都非常感謝。

回答

9

我沒有類似的東西,只是用

<%= link_to pg_search_document.searchable.title, pg_search_document.searchable %> 

讓Rails的動態創建的路徑相關記錄。

0

嗯,離開這個問題一段時間後,這真是太神奇了。這一點,以及更持久的基於Ruby的谷歌搜索。這是我想出的解決方案:

<ul> 
    <% @pg_search_documents.each do |pg_search_document| %> 
    <li><%= link_to pg_search_document.searchable.title, "../#{(pg_search_document.searchable.class).to_s.downcase!.pluralize}/#{pg_search_document.searchable.id}" %></li> 
    <% end %> 
</ul> 

不過,這對我來說似乎很難看。我仍然非常有興趣看到更精簡和智能的東西。

相關問題