localhost的未初始化常量DashboardController:访问站点区域时接受管理员端

时间:2013-04-17 16:41:13

标签: ruby-on-rails-3

你好我在使用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放在那里。

1 个答案:

答案 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,即可让用户成为管理员。