2013-06-19 60 views
0

現在掙扎幾個小時。在我最初製作自己的認證系統後,我將Devise gem集成到了我的Rails項目中,但是我面臨着一個我無法理解的問題。Ruby on Rails設計after_sign_in_path_for在不相關的控制器上調用

當方法用戶登錄:

def after_sign_in_path_for(resource_or_scope) 
    user = resource_or_scope 
    user_path(user.username) 
end 

被觸發,將用戶重定向到他們的個人資料。

我有一個編輯用戶路線,它將用戶帶到一個頁面,他們可以在其中編輯他們的詳細信息並添加一個「想要的項目」。兩個獨立的表單,兩個單獨的控制器和操作。

「添加想要的項目」方法發佈到另一個控制器,該控制器呈現名爲WantsController的視圖,並通過關聯向用戶添加通緝事項。

由於某種原因,在提交此表單時調用after_sign_in_path_for方法?它無關,與登錄...

這裏是我的路線:

#users/auth 
    devise_for :users, :skip => [:sessions, :registrations] 
    devise_scope :user do 

     # registration 
     get "/signup", to: "users#new", as: :sign_up 
     post "/signup", to: "users#create", as: :sign_up_create 

     # account 
     get "/:username/account", to: "users#edit", as: :user_account 
     put "https://stackoverflow.com/users/:id", to: "users#update", as: :user_update 

     # shows 
     get "/:username", to: "users#show", as: :user 
     get "/:username/interests", to: "users#interests", as: :user_interests 
     get "/:username/offers", to: "users#offers", as: :user_offers 
     get "/:username/trades", to: "users#trades", as: :user_trades 

     # auth 
     post "/signin" => 'devise/sessions#create', as: :sign_in 
     delete "/signout", to: "devise/sessions#destroy", as: :sign_out 

     #wants 
     resources :wants, only: [:create, :destroy] 

    end 

如果我放在wants資源的色器件範圍之外(這是我期望它應該去)我收到以下內容:

找不到設計映射路徑「/想」

這裏發生了什麼?難倒!

謝謝。

回答

0

唉,愚蠢的錯誤。爲什麼經過幾個小時的掙扎之後,當你在Stack Overflow上發佈一個問題時,你會在5分鐘之後找出結果?!

我已經將我的RegistrationsController複製並粘貼到了要控制器文件中,以節省鍵入控制器代碼,但忘記使其從ApplicationController而不是Devise :: RegistrationsController繼承。

課程:不要複製和粘貼!