你好我在使用localhost:3000打开我的网站时遇到“未初始化的常量DashboardController”问题。它告诉我上面的错误。它不允许我进入用户端。
我有很多管理员以及用户的模型,所以我需要解决此错误。
是这样....我已经定义了root:to => 'home / index'作为我的根文件,因此无论何时我在浏览器中编写localhost都无法加载。
我为用户安装了devise,为admin安装了active-admin。
// for devise user session
controller :sessions do
get 'login' => :new
post 'login' => :create
delete 'logout' => :destroy
end
root :to => 'home#activity_list' //for localroot
新问题及其答案:
如果您收到此错误,请执行此操作。
由Admin :: DashboardController #index处理为HTML已完成401 在1ms内未经授权
当您尝试打开localhost:3000 / admin并且它重定向到localhost时会出现这种情况:3000 / usres / sign_in
然后你可以添加这三行,所以复制这三行并粘贴到config / initializers / active_admin.rb中的文件底部(在ActiveAdmin.setup do | config | .... end之后)。
ActiveAdmin::BaseController.class_eval do
skip_before_filter :authenticate_user!
end
其实我有
before_action:authenticate_user!
在我的application_controller中。
只需打开ActiveAdmin :: BaseController并将skip_before_filter放在那里。
答案 0 :(得分:2)
在routes.rb中:
root :to => 'frontpage#index' # MUST be before ActiveAdmin (as SSR said)
devise_scope :users do # Must also be before ActiveAdmin
root :to => "frontpage#index"
end
namespace :admin do
root to: 'users#index' # if you want to be on user by default on the admin
#resources :dashboard <= Remove this line if you have it
end
devise_for :admin_users, ActiveAdmin::Devise.config
ActiveAdmin.routes(self)
devise_for :users, :controllers => {:omniauth_callbacks => 'omniauth_callbacks'}
ActiveAdmin.routes(self)
如果您有错误uninitialized constant DashboardController
,请删除app/helpers/admin/
另一种方法是只在您的用户表中添加is_admin
列。
然后,在initializers/active_admin.rb
:
config.authentication_method = :authenticate_admin_user!
config.current_user_method = :current_admin_user
这在application_controller.rb
def authenticate_admin_user!
if !current_user.is_admin
flash[:error] = "You must be admin to access this page."
redirect_to root_path
return
end
end
这样,您不需要admin_user表。只需将is_admin从0更改为1,即可让用户成为管理员。