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> 

不过,这对我来说似乎很难看。我仍然非常有兴趣看到更精简和智能的东西。

相关问题