我正在使用active_admin并且在设置多个命名空间时遇到问题。
相关文件:
配置/初始化/ active_admin.rb:
config.load_paths = [File.join(Rails.root, "app", "active_admin")]
config.default_namespace = :superadmin
config.namespace :superadmin do |superadmin|
superadmin.site_title = "superadmin"
superadmin.authentication_method = :authenticate_superadmin_user!
end
config.namespace :admins do |admins|
admins.site_title = "admins"
admins.authentication_method = :authenticate_admin_user!
end
然后我有两个子文件夹,/admins
和/superadmin
:
应用程序/ active_admin /超级管理员/仪表板:
ActiveAdmin.register_page "Dashboard" do
...
应用程序/ active_admin /超级管理员/ product_product.rb:
ActiveAdmin.register Product::Product, as: Product do
...
到目前为止,非常好。
现在,我似乎无法弄清楚如何为管理员(或任何其他页面/模型)添加仪表板而不会爆炸。
如果我转到localhost:3000/admins
,我会收到错误uninitialized constant Admins::DashboardController
。
我尝试添加:
应用程序/ active_admin /管理员/ dashboard.rb:
ActiveAdmin.register_page "Dashboard do
...
(什么都不做)
并命名空间:
应用程序/ active_admin /管理员/ dashboard.rb:
ActiveAdmin.register_page "Dashboard, namespace: "admins" do
...
给出错误:
Invalid route name, already in use: 'admins_root'
You may have defined two routes with the same name using the `:as` option,
or you may be overriding a route already defined by a resource
with the same naming
我也尝试在load_paths中添加子文件夹:
config.load_paths = [
File.join(Rails.root, "app", "active_admin"),
File.join(Rails.root, "app", "active_admin", "admins"),
File.join(Rails.root, "app", "active_admin", "superadmin")
]
请注意我已经查看了以下内容,但似乎没有一个真正起作用......
编辑:
我还尝试删除config.default_namespace
,唯一能做的就是中断localhost:3000/superadmin
,以便它有错误:
uninitialized constant Superadmin::DashboardController
答案 0 :(得分:0)
我不确定,但我发现了一个有两个名称空间的工作示例,管理员和主持人,每个都有自己独立的仪表板和页面。
您可以在此处检查代码并在浏览器中运行该应用程序: http://code.runnable.com/UsdWOiz4K8oDAAgG/customizing-active-admin-for-ruby-on-rails