【发布时间】:2019-12-03 12:20:46
【问题描述】:
这是我的用户/密码/编辑表单
<%= simple_form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :put }) do |f| %>
<% if resource.errors[:reset_password_token].present? %>
<%= link_to 'request to reset your password again.', new_user_password_path %>
<% end %>
<%= f.error_notification %>
<%= f.input :reset_password_token, as: :hidden %>
<%= f.full_error :reset_password_token %>
<div class="form-inputs">
<%= f.input :password,
label: "New password",
required: true,
autofocus: true,
hint: ("#{@minimum_password_length} characters minimum" if @minimum_password_length),
input_html: { autocomplete: "new-password" } %>
<%= f.input :password_confirmation, label: "Confirm your new password", required: true %>
</div>
<div class="form-actions">
<%= f.button :submit, "Change my password", style: "color: #424141; margin-bottom: 6px; cursor: pointer; font-family: Arial, Helvetica, sans-serif; background-color: #ffffff; border: 0.76px; border-width: thin; border-style: solid; border-color: #4241; border-radius: 1px; padding: 0px 5px 0px 5px; height: 22px;" %>
</div>
<% end %>
密码控制器显示
def update
Rails.logger.info "begin"
Rails.logger.info params
Rails.logger.info "second"
Rails.logger.info params[:user][:reset_password_token]
Rails.logger.info "end"
self.resource = resource_class.reset_password_by_token(reset_password_token: params[:user][:reset_password_token], password: params[:user][:password], password_confirmation: params[:user][:password_confirmation])
if resource.errors.empty?
flash_message = resource.active_for_authentication? ? :updated : :updated_not_active
set_flash_message(:notice, flash_message) if is_navigational_format?
sign_in(resource_name, resource)
# respond_with resource, :location => redirect_location(resource_name, resource)
redirect_to edit_username_path(current_user)
else
if resource.errors.messages[:reset_password_token]
resource.errors.messages.delete(:reset_password_token)
resource.errors.messages[:password_reset_link] = ["has already been used"]
Rails.logger.info resource.errors
end
# respond_with_navigational(resource){ render_with_scope :edit }
redirect_to 'create'
end
end
我不知道要修复什么,但它打印出 resource.errors 和 params[:user][:reset_password_token],因此其中一种方法不起作用。
但错误显示在这一行:
self.resource = resource_class.reset_password_by_token(reset_password_token: params[:user][:reset_password_token], password: params[:user][:password], password_confirmation: params[:user][:password_confirmation])
【问题讨论】:
标签: devise ruby-on-rails-5 reset-password