15

我正在使用 ActiveAdmin,需要对某些视图进行自定义,并且遇到了一些我觉得我做错了的场景。

我正在向显示视图添加一个附加表(对帖子的评论)。这需要我重写整个属性表,然后添加我的面板。有没有办法在不丢失默认内容的情况下自定义视图?

我还想在显示视图上添加一个不需要自定义的关联项目表,有没有办法将通常在索引视图上的默认故事包含在默认操作和分页中?

4

4 回答 4

35

在挖掘了Active Admin 的源代码后,我找到了一种修补它的方法

  show do
    default_main_content
    panel "Your Added Stuff" do
      # Add stuff here
    end
  end

当然,这是无证的,可能被认为是一种 hack,但除非存在任何其他解决方案,否则它可以工作。

注意:要在表单操作(新建和编辑)中执行此操作:

  form do |f|
    f.inputs
    # Other inputs here

    f.actions
  end
于 2012-10-29T21:20:16.953 回答
14

除了使用default_main_content,您还可以像这样遍历模型上的列:

ActiveAdmin.register Ad do
  show do
    attributes_table do
      default_attribute_table_rows.each do |field|
        row field
      end

      # Custom bits here

    end
  end
end
于 2015-03-26T10:15:19.803 回答
4

文档的几个方面可能会对您有所帮助:

  1. 请参阅自定义显示页面自定义索引页面自定义表单自定义页面。自定义显示屏幕的示例:

    ActiveAdmin.register Ad do
      show do |ad|
        default_main_content
        h3 ad.title
      end
    end
    
  2. 请参阅文档的自定义控制器操作部分中的自定义操作项。一个例子:

    action_item :only => :show, :if => proc{ current_admin_user.super_admin? } do
         "Only display this to super admins on the show screen"
    end
    

NB default_main_content不再存在于文档中,但它工作正常。

于 2012-10-30T17:51:51.747 回答
0

自己想通了:对于默认表索引页面,您可以执行以下操作

index do
  h1 "Hello World"
  p "get more content"

  instance_eval(&default_table)
end
于 2020-01-09T10:28:26.887 回答