2 activeadmin的命名空间
我正在尝试在过去的4个小时内安装带有两个名称空间的activeadmin,但我没有运气。
我想要两个命名空间。 “admin”和“admin_unit”。
我会假设我有app / admin和app / admin_unit目录。
对于admin命名空间,我想使用默认的devise身份validation,对于“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命名空间目录修复了问题。 不知道什么是行不通的……但是哦,我已经在这个问题上花了足够的周期,并准备继续前进。
希望能帮到别人..
您是否将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注意不要多次加载资源
至于身份validation方法,这样的事情应该工作:
config.namespace :admin_unit do |namespaced| namespaced.authentication_method = :current_user end
但请注意,’authentication_method’和’current_user_method’是两种不同的设计设置(用于在控制器操作之前进行身份validation ,并分别返回当前用户)。 我只是指出这一点,因为我认为’current_user’是默认情况下(非activeadmin)设计调用返回登录用户的方法
放置文件的目录与命名空间的配置不同。 如果要添加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