Devise - восстанавливаемый (сброс пароля)

Я пытаюсь разрешить пользователю сбросить свой пароль, используя параметр 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"

Есть идеи, как я могу продолжить? Я думал, что использование восстанавливаемой опции должно быть проще, чем эта. Что я делаю не так?

ОБНОВЛЕНИЕ Для записи, я просто удалил все, что делал, и попытался использовать стандартные контроллеры, и изменил макет своего приложения, чтобы он не вызывал ошибку, и все работает. Так что мне просто нужен хороший способ удалить макет приложения со страницы сброса пароля.

6
задан ardavis 16 December 2011 в 17:01
поделиться