Activeadmin禁用"新资源"方法

YuK*_*agi 39 ruby-on-rails-3 activeadmin

我正在使用Activeadmin作为我正在处理的应用程序(喜欢它)的管理界面.我很好奇是否有办法禁用资源显示页面右上角的"新资源"链接?

我正在使用的特定资源嵌套在另一个资源中,我有一个部分允许它从该父资源上的show页面创建.

我已经停用在菜单的资源,但我宁愿离开资源的菜单,以便我可以看到/编辑/删除这些资源,而无需通过其父资源希望找到它.

mak*_*ni4 69

以前的解决方案对我没有用,所以这里是一般解决方案,总是有效:

ActiveAdmin.register Book do
  actions :index

  #or like that
  #actions :all, :except => [:destroy]

  index do
    column :title
    column :author
  end  
end
Run Code Online (Sandbox Code Playgroud)

  • `actions:index`对我来说不起作用,但是`actions:all,:except => [:new]`做了这个工作. (37认同)

小智 31

尝试config.clear_action_items!

  • 为什么在他们的文件中没有显示这一点? (3认同)

ea0*_*723 23

这从右上角删除了"新资源"按钮:

    config.clear_action_items!
Run Code Online (Sandbox Code Playgroud)

这删除了"新资源"按钮以及"还没有资源 - 创建一个"框.

    actions :all, :except => [:new]
Run Code Online (Sandbox Code Playgroud)

谢谢,Irio

  • 这里有一个小注释。如果您定义自定义控制器并在控制器块内定义“new”,则会覆盖此设置。刚学了那个。如果您指定某个操作不应该存在,请确保您没有在“控制器”块中也定义它! (2认同)

小智 6

我知道这是一个老问题,但我只是想到了它(有同样的问题),并意识到这一点config.clear_action_items!并且actions :all, :except => [:new]根本不同.

config.clear_action_items!将从New索引页面中删除按钮,同时actions :all, :except => [:new]将删除按钮和路径,这意味着您无法从其他地方(在我的情况下,需要)调用它.


hca*_*ras 6

config.clear_action_items!
Run Code Online (Sandbox Code Playgroud)

将删除所有操作.如果您只想删除新的操作链接,还可以使用:

config.remove_action_item(:new)
Run Code Online (Sandbox Code Playgroud)


jpb*_*ini 5

我这样做了:

controller do
  def action_methods
    if some_condition
      super
    else
      super - ['new', 'create', 'destroy']
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

禁用某些可能的操作.action_methods返回7个标准CRUD操作的数组,因此您可以减去那些不需要的操作