如何在Rails Admin中隐藏“添加新选项”?

14

我正在定制Rails Admin: https://github.com/sferik/rails_admin,我需要禁用/隐藏某些模型的“添加新项”选项。

输入图像描述

任何帮助都会为我节省大量时间。先感谢您。

4个回答

27

我在特定模型上使用以下内容来实现这一点。希望能对您有所帮助:

config.actions do
  new do
    except ['Some Model']
  end
end

你好,但如果在URL中添加了action,则允许访问。例如:http://localhost:3000/dashboard/user/new :/ - kalelc
1
@andres 使用上述的 rails_admin DSL 只会从管理界面中移除按钮。只要该操作的路由仍然存在,您仍然可以执行该操作。 - Josh Click
只需确保在类名中不使用单引号,如 except [User] - Pramod Solanky

3
答案在操作配置文档中。默认情况下,所有操作都是可能的,包括new。要自定义可行的操作,在config/initilizers/rails_admin.rb中的config.actions中列出您想要支持的所有操作,忽略不想支持的操作。例如,以下是一个配置块,允许所有默认操作,除了new:
# config/initilizers/rails_admin.rb
RailsAdmin.config do |config|
  config.actions do
    # root actions
    dashboard
    # collection actions 
    index
    # `new` is NOT allowed
    export
    history_index
    bulk_delete
    # member actions
    show
    edit
    delete
    history_show
    show_in_app
  end
end

嗨Rory,感谢您的快速回答。由于它在初始化器中,因此适用于所有模型。它隐藏了所有模型的新操作,但我希望它只隐藏特定模型中的新操作。 - Senthil
在这种情况下,我恐怕不知道如何做。也许 RailsAdmin文档 的其他部分可以解释一下。也许你需要查看 源代码 来了解如何实现它 - 这部分 可能与此相关。或者可能RailsAdmin不支持该功能。 - Rory O'Kane
如果必要的话,可能有一些技巧可以让您运行初始化程序多次,从而在处理该模型时禁用“new”操作,并在访问任何其他模型时重新启用它。 - Rory O'Kane
很酷,只用Rails_Admin是不可能实现的。我们可以轻松地使用CAN-CAN来实现,感谢您的时间。 - Senthil
@Senthil 现在你提到 CanCan,我记得文档中有与 new 操作相关的 示例 can 调用,尽管我之前没有意识到这一点。 - Rory O'Kane

1
要使用多个模型,您必须将每个模型放在单引号中。例如,考虑以下配置:
config.actions do
  dashboard
  index do
    except ['Address']
  end
  new do
    except ['Address', 'Employee', 'Setting']
  end
  export
  show
  edit do
    except ['Employee']
  end
end

这意味着:
  • 地址不会出现在左侧的导航栏中
  • 您无法使用“添加新”按钮添加新地址、员工或设置
  • 在员工的索引视图中没有笔形图标可用于编辑。
  • 如果有一个名为User的模型,您可以在导航栏中看到它,在索引页面上进行编辑和添加新模型。
  • 您可以导出每个模型,但不能批量删除它们。

-3

2
这个被选为答案,但并不正确。请看我上面的回答。 - RubeOnRails

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接