ruby-on-rails – 在关注wiki之后,仍然在注册编辑中获得“当前密
发布时间:2020-12-17 03:16:37 所属栏目:百科 来源:网络整理
导读:我担心这里的解决方案很明显,但是我在设计维基上的指令时遇到了麻烦( https://github.com/plataformatec/devise/wiki/How-To%3a-Allow-users-to-edit-their-account-without-providing-a-password) 我正在使用Rails 4.在关注维基之后,我仍然收到“当前密码不
我担心这里的解决方案很明显,但是我在设计维基上的指令时遇到了麻烦(
https://github.com/plataformatec/devise/wiki/How-To%3a-Allow-users-to-edit-their-account-without-providing-a-password)
我正在使用Rails 4.在关注维基之后,我仍然收到“当前密码不能为空”.这是我的设置.非常感谢任何帮助! REGISTRATIONS_CONTOLLER.rb class RegistrationsController < Devise::RegistrationsController def update @user = User.find(current_user.id) successfully_updated = if needs_password?(@user,params) @user.update_with_password(devise_parameter_sanitizer.for(:account_update)) # Rails 3: @user.update_with_password(params[:user]) else # remove the virtual current_password attribute update_without_password # doesn't know how to ignore it params[:user].delete(:current_password) @user.update_with_password(devise_parameter_sanitizer.for(:account_update)) # Rails 3: @user.update_without_password(params[:user]) end if successfully_updated set_flash_message :notice,:updated # Sign in the user bypassing validation in case his password changed sign_in @user,:bypass => true redirect_to after_update_path_for(@user) else render "edit" end end private # check if we need password to update user data # ie if password or email was changed # extend this as needed def needs_password?(user,params) user.email != params[:user][:email] || params[:user][:password].present? end end APPLICATION_CONTROLER.rb class ApplicationController < ActionController::Base protect_from_forgery with: :exception before_filter :configure_permitted_parameters,if: :devise_controller? def configure_permitted_parameters devise_parameter_sanitizer.for(:account_update) do |u| u.permit(:first_name,:last_name,:username,:email,:avatar,:password,:password_confirmation) end devise_parameter_sanitizer.for(:sign_up) do |u| u.permit(:first_name,:password_confirmation) end devise_parameter_sanitizer.for(:sign_in) do |u| u.permit(:username,:password) end end end 的routes.rb ProjectFoo::Application.routes.draw do devise_for :users,:controllers => { :registrations => "registrations",:invitations => 'users/invitations' } 注意:我也在使用devise_invitable gem 查看/设计/注册/ EDIT.html.erb <h2>Edit <%= resource_name.to_s.humanize %></h2> <%= image_tag @user.avatar.url(:square) %> <%= form_for(resource,:as => resource_name,:url => registration_path(resource_name),:html => { :method => :put,:class => 'form-horizontal' }) do |f| %> <%= devise_error_messages! %> <div class="span5"> <div class="control-group"> <%= f.label :email,:class => 'control-label' %> <div class="controls"> <%= f.email_field :email,:autofocus => true,:class => 'text_field' %> </div> </div> <div class="control-group"> <%= f.label :username,:class => 'control-label' %> <div class="controls"> <%= f.text_field :username,:class => 'text_field' %> </div> </div> <div class="control-group"> <%= f.label :first_name,:class => 'control-label' %> <div class="controls"> <%= f.text_field :first_name,:class => 'text_field' %> </div> </div> <div class="control-group"> <%= f.label :last_name,:class => 'control-label' %> <div class="controls"> <%= f.text_field :last_name,:class => 'text_field' %> </div> </div> <div class="control-group"> <%= f.label :twitter_handle,:class => 'control-label' %> <div class="controls"> <%= f.text_field :twitter_handle,:class => 'text_field' %> </div> </div> <div class="control-group"> <%= f.label :avatar,:class => 'control-label' %> <div class="controls"> <%= f.file_field :avatar,:class => 'file_field' %> </div> </div> </div> <div class="span5"> <% if devise_mapping.confirmable? && resource.pending_reconfirmation? %> <div>Currently waiting confirmation for: <%= resource.unconfirmed_email %></div> <% end %> <div class="control-group"> <%= f.label :password,:class => 'control-label' %> <div class="controls"> <%= f.password_field :password,:autocomplete => "off",:class => 'password_field' %><br><i>(leave blank if you don't want to change it)</i> </div> </div> <div class="control-group"> <%= f.label :password_confirmation,:class => 'control-label' %> <div class="controls"> <%= f.password_field :password_confirmation,:class => 'password_field' %> </div> </div> <div class="control-group"> <%= f.label :current_password,:class => 'control-label' %> <div class="controls"> <%= f.password_field :current_password,:class => 'password_field' %><p><i>(we need your current password to confirm your changes)</i></p> </div> </div> <%= f.submit "Update" %> </div> <% end %> <div class="span11"> <hr> </div> <div class="span11"> <h3>Cancel my account</h3> <p>Unhappy? <%= button_to "Cancel my account",registration_path(resource_name),:data => { :confirm => "Are you sure?" },:method => :delete %></p> <p><%= link_to "Back",:back %></p> </div> 解决方法
你有两次update_with_password.第二次应该是update_without_password.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |