在ActiveAdmin中使用自定义方法来筛选数据并匹配父表列中的数据,可以通过ActiveAdmin的filter方法和scope方法来实现。
首先,在ActiveAdmin的资源文件中定义filter方法,并使用scope方法来定义筛选逻辑。假设我们有一个Order模型,其中包含一个customer_id列,我们想要筛选出与特定客户关联的订单。可以按照以下步骤操作:
filter :customer_id, as: :select, collection: -> { Customer.pluck(:name, :id) }
scope :by_customer, ->(customer_id) { where(customer_id: customer_id) }
index do
selectable_column
column :id
column :customer
column :created_at
actions
end
scope :all, default: true
scope :by_customer
# 或者在show方法中使用
show do
attributes_table do
row :id
row :customer
row :created_at
end
end
scope :all, default: true
scope :by_customer
在上面的示例中,我们使用了一个下拉选择框来显示所有客户,并将选定的客户ID传递给scope方法来进行筛选。在index方法中,我们显示了订单的id、关联的客户和创建时间等信息。在show方法中,我们使用attributes_table来显示订单的详细信息。
通过上述代码示例,我们可以在ActiveAdmin中使用自定义方法来筛选数据并匹配父表列中的数据。可以根据实际的需求来修改和扩展上述代码。