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

SSR*_*SSR 7 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
Run Code Online (Sandbox Code Playgroud)

新问题及其答案:


如果您收到此错误,那么jus会这样做.

由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     
Run Code Online (Sandbox Code Playgroud)

其实我有

before_action:authenticate_user!

在我的application_controller中.

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

Ben*_*ier 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)
Run Code Online (Sandbox Code Playgroud)

如果出现错误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
Run Code Online (Sandbox Code Playgroud)

而这在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
Run Code Online (Sandbox Code Playgroud)

这样,您就不需要 admin_user 表。只需将 is_admin 从 0 更改为 1,用户即可成为管理员。