我正在使用 Activeadmin 作为我正在开发的应用程序的管理界面(喜欢它),我很好奇是否有办法禁用资源显示页面右上角的“新资源”链接?
我正在使用的特定资源嵌套在另一个资源中,并且我有一个部分允许从该父资源上的显示页面创建它。
我已禁用菜单中的资源,但我宁愿将资源保留在菜单中,这样我就可以查看/编辑/删除这些资源,而不必通过查看其父资源来找到它。
以前的解决方案对我不起作用,所以这里是通用解决方案,始终有效:
ActiveAdmin.register Book do
actions :index
#or like that
#actions :all, :except => [:destroy]
index do
column :title
column :author
end
end
尝试
config.clear_action_items!
删除指向 New
的链接以及表格顶部的其他链接
这删除了右上角的“新资源”按钮:
config.clear_action_items!
这删除了“新资源”按钮以及“尚无资源 - 创建一个”框。
actions :all, :except => [:new]
谢谢你,伊里奥
config.clear_action_items!
将删除所有操作。 如果您只想删除新操作链接,您也可以使用:
config.remove_action_item(:new)
我知道这是一个老问题,但我刚刚想到它(有同样的问题),并意识到
config.clear_action_items!
和 actions :all, :except => [:new]
本质上是不同的。
config.clear_action_items!
将从索引页中删除New
按钮,而actions :all, :except => [:new]
将删除按钮和路线,这意味着您无法从其他地方调用它(在我的情况下,这是需要的) .
我这样做了:
controller do
def action_methods
if some_condition
super
else
super - ['new', 'create', 'destroy']
end
end
end
禁用一些可能的操作。 action_methods 返回 7 个标准 CRUD 操作的数组,因此您可以减去您不想要的操作
甚至:
ActiveAdmin.register Purchase do
config.clear_action_items!
actions :index
end
config.clear_action_items!
只完成了一半的工作。但有一个问题。
如果索引表为空,活动管理员会显示此消息
还没有[资源]。创建一个
上面的命令不会隐藏它,我不想完全禁用该操作。因此,我保留了链接并编辑了新操作以通过消息重定向到父资源索引。
controller do
def new
if params[:parent_id].present?
super
else
redirect_to parent_resources_path, notice: "Create Resource through ParentResource"
end
end
end
Worked for me too ! :-)
ActiveAdmin.register AssetSumView do
menu :label => "Asset Summary View", :parent => "Things"
# no button for NEW (since this is a db view)
#---------------------------------------------------------------------------------------------
config.clear_action_items!
enter code here
action_item do
link_to "Assets" , "/admin/assets"
end
action_item do
link_to "AssetCatgCodes", "/admin/asset_catg_codes"
end
#---------------------------------------------------------------------------------------------