2013-04-17 10 views
7

こんにちは私はlocalhost:3000で自分のサイトを開くときに "初期化されていない定数DashboardController"の問題があります。上記のエラーが表示されます。それは私がユーザー側に入ることを許可していません。localhostのDashboardController:サイトにアクセスするときに受け入れるときadmin側

私は管理者用のモデルもたくさんありますので、このエラーの解決策が必要です。

y ....私は自分のブラウザにlocalhostを書くときはいつでもロードに失敗するので、root:to => 'home/index'をルートファイルとして定義しています。

私はuserのための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 


新しい質問とその回答:


あなたはこのエラーを取得している場合は、ジュースはこれを行います。 3000/adminとそれがローカルホストにリダイレクトします:HTMLとして管理:: DashboardControllerの#インデックスによって

処理が1msの

あなたがローカルホストを開こうとするとこれが起こるに無断401 を完了3000/usres/sign_in

これらの3行を追加することができますので、config/initializers/active_admin.rbの(ActiveAdmin.setup do | config | .... endの後に)これ​​らの3行をコピーしてファイルの最後に貼り付けてください。 authenticate_user:

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

は、実際に私は

before_actionを持っています!

in my application_controller

ActiveAdmin :: BaseControllerを開き、そこにskip_before_filterを入れてください。 routes.rbをで

+8

解決策を得ました:このタイプの問題があなたのroutes.rbファイルを確認したときはいつでも、adminとユーザーのために2つのroot:to => 'controller#action' bクラッシュ。それでは、あなたのルートで.RBファイルは、この行をrootにしてください:to => 'controller#action' ...前にActiveAdmin.routes(self)...サーバを再起動して.... .... – SSR

+0

ありがとう、これは問題を解決しました。 – rmagnum2002

+0

ありがとう!私のために働いた! –

答えて

2

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テーブルは必要ありません。ユーザーがadminになるには、is_adminを0から1に変更してください。

関連する問題