Rails3アプリで支払いを受け入れるためにStripeを使用しています。Stripeには次のコーヒースクリプトが必要です。
jQuery ->
Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content'))
video.setupForm()
video =
setupForm: ->
$('#new_video input:submit').click ->
$(this).addClass('wasclicked')
$('#new_video').submit ->
clickedBtn = $(this).find('.wasclicked')
if clickedBtn.attr('name') != 'back_button' && $('#card_number').length
video.processCard()
clickedBtn.removeClass('wasclicked')
false
else
true
processCard: ->
card =
number: $('#card_number').val()
cvc: $('#card_code').val()
expMonth: $('#card_month').val()
expYear: $('#card_year').val()
Stripe.createToken(card, video.handleStripeResponse)
handleStripeResponse: (status, response) ->
if status == 200
$('#video_stripe_card_token').val(response.id)
$('#new_video')[0].submit()
else
$('#stripe_error').text(response.error.message)
$('input[type=submit]').attr('disabled', false)
私のアプリでは、顧客への請求が0の場合、Stripeクレジットカードのフィールドは非表示になっており、フォームを正常に送信する必要はありません。私のコントローラーのこのステートメントはそれを説明しています:
@video.save if @video.all_valid? && ((@total > 0 && @video.save_with_payment(@total)) || @total == 0)
私が抱えている問題は次のとおりです。料金が0で、フォームで支払いが不要な場合、送信ボタンを押してフォームを送信しても何も起こりません。クリックしてクリックするだけで、何の反応もありません。ただし、ページをリロードすると、フォームは正常に送信されます。
Stripeのcoffeescriptファイル(上記)を削除したところ、この場合は送信ボタンが機能しました。では、この例でコーヒースクリプトを無効にするにはどうすればよいですか?「if」ステートメントは私のコントローラーまたはコーヒースクリプトに入りますか?