2

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

这是我的文件

路由.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>
4

2 回答 2

2

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

def search_data
   attributes.merge(
    tags_name: tags.map(&:name)
   )
end
于 2015-01-11T14:36:57.743 回答
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 输出一个标签数组,所以你不需要将它们映射到一个数组中。

于 2015-12-14T14:25:21.350 回答