我刚从Devise 1.5.1升级到Devise 2.0。
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上运行,如果这有所不同。
答案 0 :(得分: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 :(得分:1)
我也有类似的问题,所以我创建了一个自定义路径,它对我有用
match '/users/sign_in' => "devise/sessions#create", :as => :create_user_session
我希望这适合你。您可以根据需要自定义