我正在使用ActiveAdmin并且需要对某些视图进行自定义,并且遇到了一些我认为我做错了的情况。
我在show视图中添加了一个附加表(对帖子的评论)。这要求我重写整个属性表,然后添加我的面板。有没有办法在不丢失默认内容的情况下自定义视图?
我还想在show视图中添加一个关联项目表,不需要自定义是否有任何方法可以包含通常在索引视图中使用默认操作和分页的默认故事? / p>
答案 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)
文档的几个方面可能对您有所帮助:
请参阅Customize the Show Page,Customizing the Index Page,Customizing the Form和Custom Pages。自定义节目屏幕的示例:
ActiveAdmin.register Ad do
show do |ad|
default_main_content
h3 ad.title
end
end
请参阅文档的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
NB default_main_content
不再存在于文档中,但工作正常。
答案 3 :(得分:0)
自己弄清楚了: 对于默认的表索引页,您可以执行以下操作
index do
h1 "Hello World"
p "get more content"
instance_eval(&default_table)
end