1

如何在 Active Admin 中的文章模型上添加过滤器,它将显示所有可用标签(或简单输入字符串)的复选框并充当tagged_with(tags)acts_as_taggable_on 可用的方法?

我以前看过这个贴:

filter :taggings_tag_name, :as => :check_boxes, :collection => proc { Article.tag_counts.map { |t| t.name} }

但它使用 IN 查询,很像tagged_with(tags, :any => true)方法,这不是我想要的。

4

1 回答 1

2

您可能想要做的是创建一个自定义搜索方法并从过滤器中使用它。

ActiveAdmin 使用meta_search,因此您可以创建一个范围来优化您的搜索并使用它的 search_methods 方法。

这是解决方案的建议:

class Article

  scope :custom_tags_equals, ->( tags ) do
    tagged_with tags
  end

  search_methods :custom_tags_equals
end

ActiveAdmin.register Article do
# ...
filter :custom_tags_equals, :as => :select, 
  :collection => proc { Article.tag_counts.map{ | tag | tag.name } },
  :input_html => { :multiple => true }
# ...
end
于 2015-03-12T00:05:42.827 回答