2012-03-15 40 views
2

我剛剛升級到從設計1.5.1設計2.0設計返回NoMethodError(未定義的方法`new_user_session_path」

Using omniauth (1.0.3) 
Using omniauth-oauth (1.0.1) 
Using omniauth-twitter (0.0.8) 

我使用這個Twitter的認證我不斷收到:

NoMethodError (undefined method `new_user_session_path' for #<ActionDispatch::Routing::RoutesProxy:0x00000009b57c10> 

我的路線是這樣的:

devise_for :users, :controllers => { :sessions => 'sessions', :omniauth_callbacks => 'authentications' }, :skip => [:sessions] do 
    get 'sign-out' => 'sessions#destroy', :as => :destroy_user_session 
    end 

這個錯誤在生產中顯示出來一切正常發展我一個。如果這有所作爲,Heroku也會在Heroku上運行。

+0

你能粘貼'耙routes'? – gjb 2012-03-15 13:41:54

+0

'耙路線| grep會話「,還是你需要更多的路線? – 2012-03-15 14:13:02

回答

1

我也有過類似的問題,所以我創建了一個自定義的潰敗和它的工作對我來說

match '/users/sign_in' => "devise/sessions#create", :as => :create_user_session 

我希望這對你的作品。你可以根據你的需要定製它

+2

爲什麼問題不會在開發中發生? – 2012-03-15 14:10:36

2

你已經添加session來跳過,這意味着設計不會創建這些路線。如果您想自定義您的網址,請按照文檔here

在你的情況,這將是

devise_for :users, :skip => [:sessions] 
as :user do 
    get 'sign-in' => 'devise/sessions#new', :as => :new_user_session 
    post 'sign-in' => 'devise/sessions#create', :as => :user_session 
    delete 'sign-out' => 'devise/sessions#destroy', :as => :destroy_user_session 
end 
+1

爲什麼這個問題在開發中不會發生?第二,如果我明確地告訴它跳過它,爲什麼和在哪裏調用'new_user_session_path'? – 2012-03-15 14:10:30

+0

我不知道爲什麼id不會在開發過程中發生,但你沒有告訴設計跳過「調用」它,你只是告訴它跳過「創建」它。 – zsquare 2012-03-15 14:41:33

+0

用戶登錄應該發生在omniauth_callbacks而不是new_user_session中 – 2012-03-15 14:46:34

相關問題