タイトルがややこしいので説明します。次のコントローラーメソッドがあります。
def password_update
@op = params[:old_password]
@np = params[:new_password]
@cp = params[:confirm_password]
if @np == @cp
if !@np.empty?
if current_user.update_with_password(:current_password=> @op)
current_user.password = @np
if current_user.save
flash[:notice] = "Password Successfully Changed"
redirect_to settings_path and return
end
else
flash[:notice] = "Incorrent Current Password"
redirect_to change_password_path and return
end
else
flash[:notice] = "New Password Cannot Be Blank"
end
elsel
flash[:notice] = "Incorrect Password Confirmation"
end
redirect_to change_password_path
end
他のすべてはうまく機能します。つまり、このメソッドに移動し、フォームの送信時にそれを呼び出す作業ルートとビューがあることを意味します。ただし、パスワードを正しく変更しようとすると、エラーが発生します。ところで、私はDeviseを使用しています。送信をクリックするとログアウトされ、「このアクションを完了するにはサインインする必要があります」と表示されます。サインインしようとすると、現在のパスワードが機能しません。パスワードが(フォームで設定したものに)変更されました!サインインする必要があると表示されます (パスワードを変更しようとするとサインインします) が、それでも変更されます。
どんな助けでも大歓迎ですが、私は初心者であり、詳細な説明をいただければ幸いです。ありがとう!