5

在过去的 4 小时内,我正在尝试使用两个命名空间安装 activeadmin,但没有运气。

我想要两个命名空间。“管理员”和“管理员单元”。

我会假设我将拥有 app/admin 和 app/admin_unit 目录。

对于 admin 命名空间,我想使用默认的设计身份验证,对于“admin_unit”命名空间,我有一个需要使用的 current_user 方法。

我尝试使用命名空间将所有配置包装在 active_admin 配置中,并且尝试手动创建文件等,但每次遇到问题时。

Activeadmin 在过去一年中发生了很大变化,我担心我看到的一半指令已经过时了。而且没有一个是完整的。该文档仅部分存在于命名空间中。

有没有人从头到尾安装这两个命名空间的一些分步说明?对于这方面的一些帮助,我将不胜感激!

编辑

当我去启动服务器(或者在这种情况下我试图耙路由)时,我收到此错误:

 Expected /app/active_admin/admin/dashboard.rb to define Admin::Dashboard (LoadError)

dashboard.rb 里面有这个:

ActiveAdmin.register_page "My Page", :namespace => :admin do
  content do
    para "Hello World"
  end
end

我也尝试过没有命名空间:

ActiveAdmin.register_page "My Page" do
  content do
    para "Hello World"
  end
end

仅供参考,我添加了一个“active_admin”目录,并将两个命名空间目录都放在那里。我将两者都添加到了加载路径中(谢谢)。

此错误是否与新的仪表板页面有关?接下来我将研究它们是如何工作的。

多谢你们!感谢您的工作 Gregg,我现在已经在几十个应用程序上使用了 AA,并且喜欢它!

编辑修复

好的,在最后一个问题上,我发现从我创建的“active_admin”目录中取出两个 activeadmin 命名空间目录可以解决问题。不知道那是行不通的……但是哦,好吧,我已经在这个问题上花费了足够多的周期,并且准备继续前进。

希望对其他人有所帮助..

4

2 回答 2

8

您是否将 app/admin_unit 添加到 active_admin 的加载路径?

  config.load_paths = [File.expand_path('app/admin', Rails.root), File.expand_path('app/admin_unit', Rails.root)]

这可以进入 'config/initializers/active_admin.rb' 这是必要的,因为 active_admin 小心不要多次加载资源

至于身份验证方法,应该是这样的:

config.namespace :admin_unit do |namespaced|
    namespaced.authentication_method = :current_user
end

但请注意,“authentication_method”和“current_user_method”是两个不同的设计设置(用于在控制器操作之前进行身份验证,并分别返回当前用户)。我只指出这一点是因为,我认为“current_user”是(非活动管理员)Devise 默认调用以返回登录用户的方法

于 2012-10-16T05:17:48.247 回答
7

您放置文件的目录与命名空间的配置不同。如果您想添加 Active Admin 从中加载文件的新目录:

  config.load_paths = [File.expand_path('app/admin', Rails.root), File.expand_path('app/admin_unit', Rails.root)]

现在您可以将文件放在 app/admin_unit 中,Active Admin 将加载它们。这对放置这些文件的“命名空间”没有影响。

要为资源设置命名空间,只需将命名空间的名称传递到注册中:

ActiveAdmin.register SomeResource, :namespace => :admin_unit do
  # configuration
end
于 2012-10-16T15:57:08.317 回答