ActiveAdmin显示默认视图内容

时间:2012-07-22 06:09:26

标签: ruby-on-rails ruby-on-rails-3 activeadmin

我正在使用ActiveAdmin并且需要对某些视图进行自定义,并且遇到了一些我认为我做错了的情况。

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

我还想在show视图中添加一个关联项目表,不需要自定义是否有任何方法可以包含通常在索引视图中使用默认操作和分页的默认故事? / p>

4 个答案:

答案 0 :(得分:28)

在挖掘source code of Active Admin之后,我找到了修补此方法的方法

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

当然这是没有记录的,可能被认为是黑客攻击,但除​​非存在任何其他解决方案,否则它会起作用。

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

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

    f.actions
  end

答案 1 :(得分:8)

除了使用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

答案 2 :(得分:3)

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

  1. 请参阅Customize the Show PageCustomizing the Index PageCustomizing the FormCustom Pages。自定义节目屏幕的示例:

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

    action_item :only => :show, :if => proc{ current_admin_user.super_admin? } do
         "Only display this to super admins on the show screen"
    end
    
  3. NB default_main_content不再存在于文档中,但工作正常。

答案 3 :(得分:0)

自己弄清楚了: 对于默认的表索引页,您可以执行以下操作

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

  instance_eval(&default_table)
end