我想用自定义页面替换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
不工作?
Active admin为您生成一个控制器。并且控制器是复数的
因此,在活动的admin初始值设定项中,您应该使用复数形式:
config.root_to = 'my_custom_admins#index'
这就是解决方案。
它抱怨
uninitialized constant Admin::MyCustomAdminController
因为它初始化的是:
MyCustomAdminsController
相反。
在app/admin/dashboard.rb中
将menu设置为false以隐藏仪表板按钮。
在config/ininitializers/active_admin.rb中
设置如下:
config.root_to="实体#索引"
使用ActiveAdmin 0.5.0,我能够:
1) 使仪表板以外的页面成为默认的ActiveAdmin页面。
2) 从菜单中删除仪表板选项卡。(仍然可以通过url访问)
添加到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