【问题标题】:Two Namespaces of activeadminactiveadmin 的两个命名空间
【发布时间】:2012-10-04 08:03:37
【问题描述】:

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

我想要两个命名空间。 “admin”和“admin_unit”。

我假设我将拥有 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 命名空间目录可以解决问题。不知道那是什么行不通...但是哦,好吧,我已经在这个问题上花费了足够多的周期,并且准备继续前进。

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

【问题讨论】:

  • 所以,我认为我现在的问题只是路线。我可以手动创建所有内容(而不是使用生成器),但这仍然不能使我的任何路线工作。任何帮助都会很棒!

标签: ruby-on-rails ruby namespaces activeadmin


【解决方案1】:

您是否将 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 默认调用以返回登录用户的方法

【讨论】:

  • 你们都给出了几乎相同的答案。我会给你,因为你没有那么高的“声誉”点。谢谢你们!
【解决方案2】:

您放置文件的目录与命名空间的配置不同。如果您想添加 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

【讨论】:

  • 我不知道 load_paths。我在文档或我找到的任何其他解决方案中的任何地方都没有注意到它。我相信这会解决我的问题,不过谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-03
  • 2014-07-20
  • 1970-01-01
  • 1970-01-01
  • 2017-12-22
  • 1970-01-01
相关资源
最近更新 更多