【问题标题】:Custom filter in ActiveAdminActiveAdmin 中的自定义过滤器
【发布时间】:2013-11-13 18:07:34
【问题描述】:

如何在 ActiveAdmin 中实现自定义过滤?它应该基于 ActiveRecord 条件。

例如我有 2 个模型:产品和类别

class Product < ActiveRecord::Base
   belongs_to :category
   scope :in_category, ->(category_id) { where(category_id: Category.find(category_id).descendants.pluck(:id)) }
end

class Category < ActiveRecord::Base
   has_many :products
   acts_as_nested_set
end

ActiveAdmin.register Product do
  filter :category
end

类别是分层的。

当我在过滤器中输入类别时,我应该会看到该类别的所有产品及其后代类别(产品模型中的 in_category 范围)。

现在 ActiveAdmin 使用 ransack 而不是元搜索,并且最旧的方法不起作用。

【问题讨论】:

    标签: ruby-on-rails activeadmin ransack


    【解决方案1】:

    我的例子的解决方案。

    在产品型号中:

    ransacker :containing_category, 
              :formatter => ->(v) { ids = Category.find(v).self_and_descendants.pluck(:id);
                                    ids.present? ? ids : nil } do |product|
      product.table[:category_id]
    end
    

    过滤器:

    filter :containing_category_in, 
      as: :select, 
      label: 'Category',
      collection: Category.all
    

    【讨论】:

      【解决方案2】:

      这里是如何在 ActiveAdmin 中的索引页面上创建自定义列并添加基于 Ransack 的自定义过滤器的文章:

      http://codeonhill.com/activeadmin-custom-column-and-its-filter/

      【讨论】:

      • 文章不再有效。避免只在 SO 上粘贴链接。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-05
      相关资源
      最近更新 更多