Coffeescript (jQuery)在Rails应用程序中不工作

Coffeescript (jQuery) in Rails app doesn't work?

本文关键字:应用程序 工作 Rails jQuery Coffeescript      更新时间:2023-09-26

我正在努力实现jQuery + Coffeescript的功能-问题是代码不显示任何alert窗口。

下面是JS的功能:
jQuery ->
  Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content'))
  subscription.setupForm()
subscription =
  setupForm: ->
    $('#new_subscription').submit ->
      $('input[type=submit]').attr('disabled', true)
      if $('#card_number').length
        subscription.processCard()
        false
      else
        true
  processCard: ->
    card =
      number: $('#card_number').val()
      cvc: $('#card_code').val()
      expMonth: $('#card_month').val()
      expYear: $('#card_year').val()
    Stripe.createToken(card, subscription.handleStripeResponse)
  handleStripeResponse: (status, response) ->
    if status == 200
      $('#subscription_stripe_card_token').val(response.id)
      $('#new_subscription')[0].submit()
    else
      $('#stripe_error').text(response.error.message)
      $('input[type=submit]').attr('disabled', false)

所有classid属性都配置正确,但是当我点击按钮时,没有alert窗口被调用。

当我把alert窗口放在jQuery ->行之前,

alert('asf')
jQuery ->
...

显示alert window,但是当我执行

jQuery ->
alert('asf')
...

then不显示

上面的文件已成功加载。我使用jQuery v1.11.1, Rails v4 .

我忽略了什么?

谢谢oyu

意图在coffescript中很重要

jQuery ->
  alert('asf')

将产生

 jQuery(function() {
   return alert('asf');
 });
然而

jQuery ->
alert('asf')

将产生

jQuery(function() {});
alert('asf');

可能搞砸了其他一些意图。使用Firebug或类似的chrome开发工具检查编译后的js代码