我想用自定义页面替换ActiveAdmin中的默认仪表板页面。
这主要是因为我想要一个基于资源的页面,即使用ActiveAdmin.register
而不是ActiveAdmin.register_page
生成的页面。
我刚刚删除了dashboard.rb
文件,希望MyCustomAdmin
是一个常规(和工作)ActiveAdmin资源,只需取代仪表板。
但它没有,而是我收到了这个错误:
uninitialized constant Admin::DashboardController
所以我更改了ActiveAdmin初始化程序并设置:
# config/initializers/active_admin.rb
config.root_to = 'my_custom_admin#index'
我也有MyCustomAdmin
这样:
# app/admin/my_custom_admin.rb
ActiveAdmin.register MyCustomAdmin do
menu :priority => 1, :label => 'Report'
index do
column "column 1 title", :column1
end
end
在我的模特中我也有:
# app/models/my_custom_admin.rb
class MyCustomAdmin < ActiveRecord::Base
end
问题是当我尝试访问localhost:3000/admin
时出现错误:
uninitialized constant Admin::MyCustomAdminController
但如果我去localhost:3000/admin/my_custom_admin
它就可以了。
为什么localhost:3000/admin
无效?
答案 0 :(得分:12)
Active admin为您生成一个控制器。并且控制器是多元化的。
因此,在活动的管理员初始化程序中,您应该使用复数形式:
config.root_to = 'my_custom_admins#index'
这就是解决方案。
它抱怨
uninitialized constant Admin::MyCustomAdminController
因为它初始化的是:
MyCustomAdminsController
代替。
答案 1 :(得分:10)
在 app / admin / dashboard.rb
中设置菜单false以隐藏仪表板按钮。
在 config / initializers / active_admin.rb
中设置如下:
config.root_to =&#39; entities #index&#39;
答案 2 :(得分:1)
使用ActiveAdmin 0.5.0我能够:
1)将仪表板以外的页面设为默认的ActiveAdmin页面。
2)从菜单中删除仪表板选项卡。 (仍可通过网址访问)
添加config / initializers / active_admin.rb:
ActiveAdmin.setup do |config|
...
# The default start page becomes SomethingElse
config.root_to = 'something_else#index'
end
module ActiveAdmin
module Dashboards
class << self
# Remove the dashboard tab from the menu
alias_method :original_add_to_menu, :add_to_menu
def add_to_menu(namespace, menu)
# empty
end
end
end
end