JS不在Rails中工作

时间:2014-11-11 14:40:09

标签: javascript jquery ruby-on-rails

我熟悉Turbolinks问题,但似乎我的修复工作无效。

我有这个:

var ready = function () {
  $('.add_to_cart').click(function (e) {
    e.preventDefault();
    var pid = $(this).attr('data-pid');
    $.post('/cart/'+ pid, function(data){
      var data = JSON.parse(JSON.stringify(data));
      $('#items-in-cart').text(data['cart_size']);
      console.log(data);
    });
  });
};

$(document).ready(ready);
$(document).on('page:load', ready);

我的javascript不会触发文档加载。我必须刷新。我已经在其他页面上完成了此修复,并且它有效。我还应该尝试/寻找什么?

编辑:

我正在使用jquery(通过jquery-rails gem,3.1.2)

我在jquery中发现了这个错误:

Uncaught TypeError: undefined is not a function

ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
                            .apply( matched.elem, args );

找到对此错误的引用' here

编辑2:

这是我的html.slim:

=link_to "Add to Cart", "#", class: 'add_to_cart', data: {pid: @product.id}

如果我摆脱了这一行,我的其余javascript函数在页面加载的就绪块中工作。如果我保留它,我会得到Uncaught TypeError。

编辑3:

我从我的应用程序中删除了turbolinks,它运行正常。我想继续使用turbolinks,但在这一点上,这是我唯一的解决方案。

1 个答案:

答案 0 :(得分:0)

您需要绑定click事件,因为内容是通过ajax加载的,请执行此操作

$('body').on('click', '.add_to_cart', function(e){
  // js code
});