2013-04-01 41 views
2

我剛剛安裝了ActiveAdmin,並且一切進展順利:登錄到ActiveAdmin時發生路由錯誤

安裝了gem,我運行了安裝命令。我能夠訪問localhost:3000/admin並使用文檔中列出的admin @ example和'password'憑據登錄。

然而,當我點擊 「登錄」,我得到如下:

No route matches {:action=>"show", :controller=>"users", :id=>nil} 

我的routes.rb文件:

devise_for :admin_users, ActiveAdmin::Devise.config 
ActiveAdmin.routes(self) 

devise_for :users, :path => '', :path_names => {:sign_in => 'login', :sign_out => 'logout'} 

resources :offers 

resources :users do 
collection do 
    get :currentoffers 
end 

我users_controller.rb:

def index 
end 

def show 
    @user = User.find(params[:id]) 
end 

def currentoffers 
    #calls the currentoffers.js.erb file 
    respond_to do |format| 
     format.html 
     format.js 
    end 
end 

我跑耙路線時得到的東西:

admin_root   /admin(.:format)       admin/dashboard#index 
batch_action_admin_admin_users POST  /admin/admin_users/batch_action(.:format) admin/admin_users#batch_action 
     admin_admin_users GET  /admin/admin_users(.:format)    admin/admin_users#index 
          POST  /admin/admin_users(.:format)    admin/admin_users#create 
     new_admin_admin_user GET  /admin/admin_users/new(.:format)   admin/admin_users#new 
    edit_admin_admin_user GET  /admin/admin_users/:id/edit(.:format)  admin/admin_users#edit 
      admin_admin_user GET  /admin/admin_users/:id(.:format)   admin/admin_users#show 
          PUT  /admin/admin_users/:id(.:format)   admin/admin_users#update 
          DELETE  /admin/admin_users/:id(.:format)   admin/admin_users#destroy 
      admin_dashboard   /admin/dashboard(.:format)    admin/dashboard#index 
batch_action_admin_comments POST  /admin/comments/batch_action(.:format) admin/comments#batch_action 
      admin_comments GET  /admin/comments(.:format)     admin/comments#index 
          POST  /admin/comments(.:format)     admin/comments#create 
      admin_comment GET  /admin/comments/:id(.:format)    admin/comments#show 
    new_admin_user_session GET  /admin/login(.:format)     active_admin/devise/sessions#new 
     admin_user_session POST  /admin/login(.:format)     active_admin/devise/sessions#create 
destroy_admin_user_session DELETE|GET /admin/logout(.:format)     active_admin/devise/sessions#destroy 
     admin_user_password POST  /admin/password(.:format)     active_admin/devise/passwords#create 
    new_admin_user_password GET  /admin/password/new(.:format)    active_admin/devise/passwords#new 
    edit_admin_user_password GET  /admin/password/edit(.:format)   active_admin/devise/passwords#edit 
          PUT  /admin/password(.:format)     active_admin/devise/passwords#update 
      new_user_session GET  /login(.:format)       devise/sessions#new 
       user_session POST  /login(.:format)       devise/sessions#create 
     destroy_user_session DELETE  /logout(.:format)       devise/sessions#destroy 
    user_omniauth_authorize   /auth/:provider(.:format)     devise/omniauth_callbacks#passthru {:provider=>/facebook/} 
    user_omniauth_callback   /auth/:action/callback(.:format)   devise/omniauth_callbacks#(?-mix:facebook) 
      user_password POST  /password(.:format)      devise/passwords#create 
     new_user_password GET  /password/new(.:format)     devise/passwords#new 
     edit_user_password GET  /password/edit(.:format)     devise/passwords#edit 
          PUT  /password(.:format)      devise/passwords#update 
    cancel_user_registration GET  /cancel(.:format)       devise/registrations#cancel 
     user_registration POST  /          devise/registrations#create 
    new_user_registration GET  /sign_up(.:format)      devise/registrations#new 
    edit_user_registration GET  /edit(.:format)       devise/registrations#edit 
          PUT  /          devise/registrations#update 
          DELETE /          devise/registrations#destroy 

有人會知道爲什麼我得到這個錯誤嗎?是否包括routes.rb文件中的用戶資源干擾ActiveAdmin?

---更新:

# Application_controller.rb: 

class ApplicationController < ActionController::Base 
    protect_from_forgery 

def after_sign_in_path_for(resource) 
    user_path(@user) 
end 

end 
+0

您是否單擊登錄網站或管理部分?它在哪裏重定向? –

+0

我在管理部分localhost3000/admin中單擊登錄。我沒有被重定向到任何地方 - 我只是顯示了一個空白頁面,上面有錯誤。 – Zephyr4434

+0

好的,日誌裏有什麼? –

回答

4

試試這個,

def after_sign_in_path_for(resource) 
    user_path(resource) 
end 

問題是,

user_path(@user) 

其中沒有定義@user,因此零。

+0

Strage - 它現在可以工作,但是當我使用管理員憑證登錄時,而不是將我帶到管理員儀表板,它將我帶到/ users/1 - 必須是一個簡單的路由錯誤,關於如何正確路由到activeadmin方面? – Zephyr4434

+0

並不奇怪。這是因爲你在重寫設計url路徑之後。您可以在after_sign_in_path_for(資源)或任何您想要的內容中將** user_path(resource)**替換爲** admin_dashboard_path **。 –

+0

或者你可以通過resource.instance_of?(AdminUser)檢查它是否是admin用戶,並有條件地重定向。 –

1

移動這一行

ActiveAdmin.routes(self) 

高於該線

devise_for :admin_users, ActiveAdmin::Devise.config 
0

移動

ActiveAdmin.routes(self) 

之前

devise_for :admin_users, ActiveAdmin::Devise.config 

由於ActiveAdmin錯誤產生額外的'/'路徑而導致錯誤, 該錯誤在ActiveAdmin 0.6.1中得到修復 升級ActiveAdmin將允許修復程序爲我們解決問題。

相關問題