我终于弄清楚了如何实现pg_search的多搜索功能。但我在制作一个可用的搜索结果页面时遇到了困难,该页面显示了包含搜索词的各种文章和常见问题的链接。这是一个使用Rails 3.2.3的非常基本的设置:
型号:
我有一个Articles和一个Faqs模型,都有“Title”和“Content”属性,这两个模型中的代码如下:
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
我想制作一个搜索结果页面,显示找到的每个结果的标题,并链接回该项目。我弄清楚了如何从@pg_search_documents中提取class属性。我的想法是在结果页面上做这样的事情:
<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.research.class”小写并复数化,我就可以自由了。我尝试在模型和控制器中编写各种方法,并尝试编写一个助手。但这就是我的Rails技能让我失败的地方。
有什么建议吗?有人知道一种更优雅的方法来实现这一点吗?任何想法/建议都非常感谢。