Activeadmin禁用“新资源”方法

时间:2011-10-19 00:32:42

标签: ruby-on-rails-3 activeadmin

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

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

我已经在菜单中禁用了资源,但我宁愿将资源保留在菜单中,这样我就可以查看/编辑/删除这些资源,而无需通过查看其父资源找到它。

9 个答案:

答案 0 :(得分:68)

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

ActiveAdmin.register Book do
  actions :index

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

  index do
    column :title
    column :author
  end  
end

答案 1 :(得分:30)

尝试config.clear_action_items!

答案 2 :(得分:22)

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

    config.clear_action_items!

这删除了“新资源”按钮以及“尚无资源 - 创建一个”框。

    actions :all, :except => [:new]

谢谢你,Irio

答案 3 :(得分:6)

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

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

答案 4 :(得分:6)

config.clear_action_items!

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

config.remove_action_item(:new)

答案 5 :(得分:5)

我这样做了:

controller do
  def action_methods
    if some_condition
      super
    else
      super - ['new', 'create', 'destroy']
    end
  end
end

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

答案 6 :(得分:3)

甚至:

ActiveAdmin.register Purchase do
  config.clear_action_items!
  actions :index
end

答案 7 :(得分:0)

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

#---------------------------------------------------------------------------------------------

答案 8 :(得分:0)

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