Разработайте возврат NoMethodError (неопределенный метод `new_user_session_path ' - PullRequest
2 голосов
/ 15 марта 2012

Я только что обновился до Devise 2.0 с Devise 1.5.1.

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

Я использую это для аутентификации в твиттере. Я продолжаю получать:

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 ]

2 голосов
/ 15 марта 2012

Вы добавили session, чтобы пропустить, что означает, что devise не будет создавать эти маршруты.Если вы хотите настроить свои URL, следуйте документации здесь .

В вашем случае это будет

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 голос
/ 15 марта 2012

У меня также была похожая проблема, поэтому я создал собственный маршрут, и он работал для меня

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

Надеюсь, это сработает для вас.Вы можете настроить его в соответствии с вашими потребностями

...