次のフォームとコントローラーがあります。
<%= form_tag do %>
<div>
<%= label_tag :Old %>
<%= password_field_tag :old_password %>
</div>
<div>
<%= label_tag :New %>
<%= password_field_tag :new_password %>
</div>
<div>
<%= label_tag :Confirm %>
<%= password_field_tag :confirm_password %>
</div>
<div>
<%= submit_tag "Update" %>
</div>
<% end %>
そしてコントローラー:
def change
@user = current_user
@op = params[:old_password]
@np = params[:new_password]
@cp = params[:confirm_password]
if @np == @cp
@user.update_with_password(:password => @np, :current_password=>@op)
if @user.save
flash[:notice] = "Password Successfully Changed"
redirect_to home_path
end
else
@user.errors.add("Incorrect confirmation")
end
end
これはすべて、config/routes.rb の「password/change」に関連付けられています。
問題は、/password/change に移動すると、すぐにホームにリダイレクトされ、「パスワードが正常に変更されました」というフラッシュ通知を受け取ることです。私が理解しているのは、パラメーターを渡すために送信ボタンをクリックする必要がないということです。コントローラーを介して続行する前に、フォームの送信を待機するようにするにはどうすればよいですか?