我正在使用 ActiveAdmin,需要对某些视图进行自定义,并且遇到了一些我觉得我做错了的场景。
我正在向显示视图添加一个附加表(对帖子的评论)。这需要我重写整个属性表,然后添加我的面板。有没有办法在不丢失默认内容的情况下自定义视图?
我还想在显示视图上添加一个不需要自定义的关联项目表,有没有办法将通常在索引视图上的默认故事包含在默认操作和分页中?
我正在使用 ActiveAdmin,需要对某些视图进行自定义,并且遇到了一些我觉得我做错了的场景。
我正在向显示视图添加一个附加表(对帖子的评论)。这需要我重写整个属性表,然后添加我的面板。有没有办法在不丢失默认内容的情况下自定义视图?
我还想在显示视图上添加一个不需要自定义的关联项目表,有没有办法将通常在索引视图上的默认故事包含在默认操作和分页中?
在挖掘了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
除了使用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
文档的几个方面可能会对您有所帮助:
请参阅自定义显示页面、自定义索引页面、自定义表单和自定义页面。自定义显示屏幕的示例:
ActiveAdmin.register Ad do
show do |ad|
default_main_content
h3 ad.title
end
end
请参阅文档的自定义控制器操作部分中的自定义操作项。一个例子:
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
不再存在于文档中,但它工作正常。
自己想通了:对于默认表索引页面,您可以执行以下操作
index do
h1 "Hello World"
p "get more content"
instance_eval(&default_table)
end