ユーザーがパスワードを変更できるようにするフォームを作成しようとしています:
意見:
- form_tag change_password_users_path do
= error_messages_for :user, :header_message => "Please Try Again", :message => "We had some problems updating your account"
%br
= label_tag :password, "New password:"
= password_field_tag "password"
%br
= label_tag :password_confirmation, "NConfirm new password:"
= password_field_tag "password_confirmation"
%br
= submit_tag "Update Account"
コントローラ:
def change_password
@user = current_user
if request.post?
@user.password = params[:password]
@user.password_confirmation = params[:password_confirmation]
if @user.save
redirect_to user_path(current_user)
else
render :action => "change_password"
end
end
end
Authlogic は、パスワードが「短すぎる」か、パスワードが確認と一致しない場合に検証エラーをキャッチしますが、両方のフィールドが空白のフォームが送信された場合は何もしません。「user_path(current_user)」にリダイレクトされるため、@user.save は true を返す必要があります。
データベース内のパスワードは実際には変更されません。
ご協力いただきありがとうございます。