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|