设计返回NoMethodError(未定义的方法`new_user_session_path'

时间:2012-03-15 13:28:15

标签: ruby-on-rails ruby-on-rails-3 devise twitter omniauth

我刚从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上运行,如果这有所不同。

2 个答案:

答案 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

我希望这适合你。您可以根据需要自定义