7

您好,当我使用 localhost:3000 打开我的网站时,我遇到了“未初始化的常量 DashboardController”的问题。它向我显示了上述错误。它不允许我进入用户端。

我有很多管理员和用户的模型,所以我需要解决这个错误。

是这样....而且我已将 root :to => 'home/index' 定义为我的根文件,因此每当我在浏览器中写入 localhost 时,它都无法加载。

我已经为用户安装了设计,为管理员安装了活动管理员。

// 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 Completed 401 Unauthorized in 1ms

当您尝试打开 localhost:3000/admin 并重定向到 localhost:3000/usres/sign_in 时会出现这种情况

然后你可以添加这三行,所以复制这三行并粘贴到 config/initializers/active_admin.rb 中的文件底部(在 ActiveAdmin.setup 执行 |config| .... end 之后)。

 ActiveAdmin::BaseController.class_eval do
   skip_before_filter :authenticate_user!
 end     

其实我有

before_action :authenticate_user!

在我的 application_controller 中。

只需打开 ActiveAdmin::BaseController 并将 skip_before_filter 放在那里。

4

1 回答 1

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

于 2013-09-04T09:58:59.860 回答