如何在acts_as_taggable_on中使用tagged_with查询作为Active Admin中的过滤器?

时间:2013-09-27 07:57:46

标签: ruby-on-rails ruby activeadmin acts-as-taggable-on

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

我之前看过这个:

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

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

1 个答案:

答案 0 :(得分: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