2 activeadmin的命名空间

Sea*_*ean 5 ruby namespaces ruby-on-rails activeadmin

我正在尝试在过去4个小时内安装带有两个名称空间的activeadmin,但我没有运气.

我想要两个名称空间."admin"和"admin_unit".

我会假设我有app/admin和app/admin_unit目录.

对于admin命名空间,我想使用默认的devise身份验证,对于"admin_unit"命名空间,我有一个我需要使用的current_user方法.

我已经尝试使用命名空间包装active_admin配置中的所有配置,并且我尝试手动创建文件等,但每次我遇到一些问题.

Activeadmin在过去的一年里发生了很大变化,我很害怕我见过的一半指令已经过时了.而且没有一个是完整的.文档仅部分位于命名空间上.

有没有人有从开始到结束安装这两个名称空间的一步一步的说明?我非常感谢你的帮助!

编辑

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

 Expected /app/active_admin/admin/dashboard.rb to define Admin::Dashboard (LoadError)
Run Code Online (Sandbox Code Playgroud)

dashboard.rb中有这个:

ActiveAdmin.register_page "My Page", :namespace => :admin do
  content do
    para "Hello World"
  end
end
Run Code Online (Sandbox Code Playgroud)

我也试过没有命名空间:

ActiveAdmin.register_page "My Page" do
  content do
    para "Hello World"
  end
end
Run Code Online (Sandbox Code Playgroud)

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

此错误是否与新的仪表板页面有关?我将研究下一步的工作方式.

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

编辑修复

好的,在上一期中,我发现从我创建的"active_admin"目录中取出两个activeadmin命名空间目录修复了问题.不确定哪些不起作用......但是哦,我已经在这个问题上花了足够的周期,并准备继续前进.

希望能帮到别人..

Out*_*ndy 8

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

  config.load_paths = [File.expand_path('app/admin', Rails.root), File.expand_path('app/admin_unit', Rails.root)]
Run Code Online (Sandbox Code Playgroud)

这可以放在'config/initializers/active_admin.rb'这是必要的,因为active_admin注意不要多次加载资源

至于身份验证方法,这样的东西应该工作:

config.namespace :admin_unit do |namespaced|
    namespaced.authentication_method = :current_user
end
Run Code Online (Sandbox Code Playgroud)

但请注意,'authentication_method'和'current_user_method'是两种不同的设计设置(用于在控制器操作之前进行身份验证,并分别返回当前用户).我只是指出这一点,因为我认为'current_user'是默认情况下(非activeadmin)默认调用返回登录用户的方法


Gre*_*ell 7

放置文件的目录与命名空间的配置不同.如果要添加Active Admin从以下位置加载文件的新目录:

  config.load_paths = [File.expand_path('app/admin', Rails.root), File.expand_path('app/admin_unit', Rails.root)]
Run Code Online (Sandbox Code Playgroud)

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

要设置资源的名称空间,只需将名称空间的名称传递给注册:

ActiveAdmin.register SomeResource, :namespace => :admin_unit do
  # configuration
end
Run Code Online (Sandbox Code Playgroud)