Я пытаюсь разрешить пользователю сбросить свой пароль, используя параметр Devise с возможностью восстановления . Похоже, у меня это не работает.
Я расширяю Devise :: PasswordsController
, чтобы он не использовал макет приложения.
class PasswordsController < Devise::PasswordsController
layout false
end
В моих маршрутах я проверяю, что используется мой контроллер паролей.
devise_for :users, :controllers => {:passwords => "passwords"}
resources :passwords
Вот моя модель User, поэтому вы видите, что у меня есть опция : recoverable
.
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
На моей странице входа у меня есть (я использую 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"
Есть идеи, как я могу продолжить? Я думал, что использование восстанавливаемой опции должно быть проще, чем эта. Что я делаю не так?
ОБНОВЛЕНИЕ Для записи, я просто удалил все, что делал, и попытался использовать стандартные контроллеры, и изменил макет своего приложения, чтобы он не вызывал ошибку, и все работает. Так что мне просто нужен хороший способ удалить макет приложения со страницы сброса пароля.