如何将 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 输出标签数组,因此您不需要将它们映射到数组中。
我安装了 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 输出标签数组,因此您不需要将它们映射到数组中。