如何在acts_as_taggable gem中使用Searchkick gem?

时间:2015-01-04 22:49:52

标签: ruby-on-rails ruby ruby-on-rails-4 searchkick

我有Searchkick设置,一切正常。如何通过acts_as_taggable添加标签以显示在搜索中?因此,如果用户搜索标记,它将显示在结果中。

以下是我的文件

的routes.rb

Rails.application.routes.draw do

   root 'links#index'
   resources :tag

   resources :links do
      collection do
          get 'search'
      end
   end

end

控制器搜索操作

def search
    if params[:search].present?
        @links = Link.search(params[:search], page: params[:page], per_page: 15 )
    else
        @links = Link.all
    end
end

Search.html.erb查看

<%= render 'shared/tagcloud' %>

<%= will_paginate @link %>

<div id="links-wrapper">
    <%= render partial: "shared/link", collection: @links %>
</div>

2 个答案:

答案 0 :(得分:2)

解决!我不得不将其添加到我的链接模型文件中:

def search_data
   attributes.merge(
    tags_name: tags.map(&:name)
   )
end

答案 1 :(得分:1)

另一种解决方案就是像这样使用tag_list

  def search_data
    {
      name: name,
      # description: description.tr("\u0000-\u001f\u007f\u2028",''),
      excerpt: excerpt,
      end_date: end_date,
      start_date: start_date,
      tag: tag_list
    }
  end

这是有效的,因为tag_list输出一个标签数组,因此您无需将它们映射到数组中。