[英]Custom filter in ActiveAdmin
如何在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代替元搜索,並且最舊的方法不起作用。
我的示例的解決方案。
在產品型號中:
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
以下是本文介紹如何在ActiveAdmin中的索引頁上創建自定義列以及如何基於Ransack添加自定義過濾器:
http://codeonhill.com/activeadmin-custom-column-and-its-filter/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.