ユーザーの編集ページでクレジット カードの追加/編集フォームを作成しようとしています。そのために、顧客コントローラーで編集および作成機能への ajax 呼び出しを実装しようとしています。
これは、モーダル ウィンドウ内の更新ボタンのコードです。
<%= button_tag "Update", :class =>"btn submit-button", :type => 'button', :onclick => "onUpdateCard('#{current_user.id}');"%>
呼び出す関数は次のとおりです。
function onUpdateCard(id) {
this.id = id;
// disable the submit button to prevent repeated clicks
$('.submit-button').attr("disabled", "disabled");
var card_number = document.getElementById('card_number').value;
var card_code = document.getElementById('card_code').value;
var card_month = document.getElementById('card_month').value;
var card_year = document.getElementById('card_year').value;
var response = Stripe.createToken({
number: $('#card_number').val(),
cvc: $('#card_code').val(),
exp_month: $('#card_month').val(),
exp_year: $('#card_year').val()
}, stripeResponseHandler);
// allow the form to submit with the default action
return false;
};
function stripeResponseHandler(status, response) {
if (response.error) {
$(".payment-errors").text(response.error.message);
$(".submit-button").removeAttr("disabled");
} else {
var token = response['id'];
var new_url = "/users/" + this.id + "/customers/new";
var edit_url = "/users/" + this.id + "/customers/1/edit";
$.ajax({
type:'GET',
url: edit_url,
data: {'stripe_card_token': token}
});
}
return false;
};
そしてコントローラーには編集機能があります:
def edit
@user = current_user
@customer = @user.customer
stripe_customer = Stripe::Customer.retrieve(@customer.stripe_customer_token)
stripe_customer.card = params[:stripe_card_token]
stripe_customer.save
end
ajaxを正しく処理する方法を理解するのを手伝ってもらえますか? これを適切にデバッグする方法がわかりません...