11

假设我有一个具有两个范围的 ActiveAdmin 模型,如下所示:

ActiveAdmin.register Book do

  scope :all, default: true
  scope :smith #all books by author 'smith'

  index do
    column :title
    column :published_year
    column :author
  end
end

当用户选择“史密斯”范围时,我不想要/不需要“作者”列。

那么有没有办法访问当前范围并仅在其中一个范围中显示作者列?我想对于这个例子,我可以使用自定义视图并检查数据的实际内容,但我希望有一种更简单更好的方法。

4

2 回答 2

23

你可以尝试类似的东西

index do
    column :title
    column :published_year
    column :author unless params['scope'] == 'smith'
  end
于 2012-12-17T00:03:46.610 回答
4

您还可以访问@current_scope 对象,并且可以执行@current_scope.scope_method 来获取底层范围方法

于 2016-04-26T15:12:17.730 回答