Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如果Rails 3应用程序中不收费,如何禁用条纹咖啡脚本?_Jquery_Ruby On Rails_Ruby On Rails 3_Coffeescript_Stripe Payments - Fatal编程技术网

Jquery 如果Rails 3应用程序中不收费,如何禁用条纹咖啡脚本?

Jquery 如果Rails 3应用程序中不收费,如何禁用条纹咖啡脚本?,jquery,ruby-on-rails,ruby-on-rails-3,coffeescript,stripe-payments,Jquery,Ruby On Rails,Ruby On Rails 3,Coffeescript,Stripe Payments,我在Rails 3应用程序中使用Stripe接受付款。Stripe需要以下咖啡脚本: jQuery -> Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content')) video.setupForm() video = setupForm: -> $('#new_video input:submit').click -> $(this).addClass('wasc

我在Rails 3应用程序中使用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,则条纹信用卡字段将隐藏,并且不需要成功提交表单。我的控制器中的此语句说明:

@video.save if @video.all_valid? && ((@total > 0 && @video.save_with_payment(@total)) || @total == 0)
我遇到的问题是:当费用为0,并且我的表单中不需要付款时,我点击提交按钮提交表单,但什么也没有发生。我可以点击再点击,没有任何回应。但是,当我重新加载页面时,表单将成功提交


我删除了Stripe的coffeescript文件(如上),然后submit按钮在这个实例中起作用。那么,在本例中如何禁用coffeescript呢?“如果”语句会进入我的控制器还是咖啡脚本?

在提交事件中,返回false将阻止表单提交。如果不希望出现这种行为,请返回除false以外的任何值。在这种情况下,如果您的费用为0,听起来您只需要一起绕过处理,这就是您需要的:

$('#new_video').submit ->
  clickedBtn = $(this).find('.wasclicked')

  if clickedBtn.attr('name') != 'back_button' && $('#card_number').length && $('#charge').val() > 0
    video.processCard()
    clickedBtn.removeClass('wasclicked')
    false
  else
    true