Получение непревзойденного роутера для password_expired - PullRequest
0 голосов
/ 04 декабря 2018
Rails 3.2
Devise
devise_security_extension
rails_email_validator

Я следовал инструкциям для Devise и devise_security_extensions.

В моих представлениях / user / password_expired / show.html.slim у меня есть:

- content_for :page_header do
     = t('users.passwords.create_password')
   = form_for(resource, as: resource_name, url: [resource_name, :password_expired], html: {method: :post, class: "form-horizontal new_user"}) do |f|
     .form-horizontal-column.wide
       .form-group
         = devise_error_messages!
       .form-group style="width: 600px"
         = f.label :current_password, t('users.passwords.current_password')
         = f.password_field :current_password
       .form-group style="width: 600px"
         = f.label :password, t('users.passwords.new_pass')
         = f.password_field :password
       .form-group style="width: 600px"
         = f.label :password_confirmation, t('users.passwords.confirm_new_password')
         = f.password_field :password_confirmation
       .form-group
         = f.submit t('users.passwords.change_my_password'), :class => "btn btn-primary btn-lg"

Когда яЗапустите приложение, отобразится приведенное выше представление, и когда я введу старый пароль, новый пароль, подтверждение и отправлю, форма снова отобразится.Файл журнала сообщает мне:

Processing by ApplicationController#routing_error as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"NngH6IQdF2uPOziO9j4r59Lf4Gd2sTF8xxwh0OUqDOI=", "user"=>{"current_password"=>"[FILTERED]", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Change My Password", "unmatched_route"=>"users/password_expired"}

Разве этот маршрут не должен обрабатываться Devise?Любые идеи, как это исправить?

РЕШЕНИЕ:

Измените вызов, чтобы поставить, а не пост, так что вид будет выглядеть так:

= form_for(resource, as: resource_name, url: [resource_name, :password_expired], html: {method: :put, class: "form-horizontal new_user"}) do |f|

1 Ответ

0 голосов
/ 06 декабря 2018

Проблема в том, что маршрут требует пут, а не пост.Измените вызов, чтобы поставить, а не сообщение, так что вид будет выглядеть так:

= form_for(resource, as: resource_name, url: [resource_name, :password_expired], html: {method: :put, class: "form-horizontal new_user"}) do |f|

Это работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...