Я пытаюсь разрешить пользователю сбросить свой пароль с помощью опции Devise recoverable .Похоже, это не работает для меня.
Я расширяю Devise::PasswordsController
, чтобы он не использовал макет приложения.
class PasswordsController < Devise::PasswordsController
layout false
end
В моих маршрутах я гарантирую, чтоиспользуется мой контроллер паролей.
devise_for :users, :controllers => {:passwords => "passwords"}
resources :passwords
Вот моя модель пользователя, поэтому вы видите, что у меня есть опция :recoverable
.
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
На моей странице входа у меня есть (яm используя haml):
...
= link_to "Forgot your password?", new_password_path(resource_name)
Эта ссылка правильно переводит меня на http://localhost:3000/users/password/new
. Вот форма, которую можно найти там:
%h2 Forgot your password?
= form_for(resource, as: resource_name, url: password_path(resource_name), html: { :method => :post }) do |f|
= devise_error_messages!
%div
= f.label :email
%br/
= f.email_field :email
%div= f.submit "Send me reset password instructions"
Однако, похоже, что это попытка взятьменя не туда, когда я нажимаю кнопку.Каждый раз происходит сбой, и в журнале сервера не отображаются электронные письма.
Он перенаправляет меня на: http://localhost:3000/passwords/user
и сообщает:
Ошибка маршрутизации
No route matches "/passwords/user"
Есть идеи, как мне поступить?Я думал, что использование опции recoverable должно быть проще, чем это.Что я делаю не так?
ОБНОВЛЕНИЕ Для записи я просто удалил все, что я сделал, и попытался использовать стандартные контроллеры devise, и я изменил макет приложения, чтобы он невызывают ошибку, и все работает.Поэтому мне просто нужен хороший способ удалить макет приложения со страницы сброса пароля.