如何将 Searchkick gem 与 acts_as_taggable gem 一起使用?

How to use Searchkick gem with acts_as_taggable gem?

我安装了 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>

已解决!我必须将其添加到我的链接模型文件中:

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

另一个解决方案就是像这样使用 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 输出标签数组,因此您不需要将它们映射到数组中。