Rails ActiveAdmin问题上有多个名称空间

时间:2017-01-25 00:22:53

标签: ruby ruby-on-rails-4 activeadmin

我正在使用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

1 个答案:

答案 0 :(得分:0)

我不确定,但我发现了一个有两个名称空间的工作示例,管理员和主持人,每个都有自己独立的仪表板和页面。

您可以在此处检查代码并在浏览器中运行该应用程序: http://code.runnable.com/UsdWOiz4K8oDAAgG/customizing-active-admin-for-ruby-on-rails