2017-03-07 56 views
1

我很难让javascript在不重新加载页面的情况下工作。我相信这个问题与涡轮链接有关。Rails 5使用turbolink加载JS

我喜欢这个

<%= form_for @cart, url: cart_path, html: {onsubmit: "addCart(event, #{@product.id})"} do |c| %> 

我然后通过ajax提交表单这样

function addCart(event, id){ 
    event.preventDefault(); 
    var quantity = $("#"+id+'_product_quantity').val() 
    $.post('/cart/add', { 
    product_id: id, 
    quantity: quantity 
    }, function(data, status, xhr){ 
    if(xhr.status !== 200){ 
     alert("There was an error. Please try again") 
    }else { 
     $("#"+id+'_product_submit').val("Added"); 
    } 
    }) 
} 

一切的的onsubmit监听器设置为形式完美的作品,当我重新加载页面,但是当我通过链接转到页面的JavaScript不会被调用。奇怪的是,event.preventDefault()正在工作。当我完全删除JavaScript表单将提交像一个正常的HTML形式。我是一个相当新的jQuery,并不知道如何获得JavaScript加载。

+0

你使用jQuery的'document.ready(...)'回调吗? – Mark

+0

不,我不是。我只是在通过$(“#id”)。submit()语法附加侦听器时才有这种印象。 –

回答

2

这可能是一个涡轮问题。在您的JavaScript文件中,围绕您的JavaScript代码

$(document).on('turbolinks:load', function() { 
    // your code 
}); 
+0

该事件正在触发,但仍然无法正常工作。我认为问题与我如何附加听众有关 –

+0

您是否在浏览器日志中看到任何内容? – Mark

+0

不,没有什么 –

0

所以这与涡轮连接有关。我无法弄清楚如何使它与涡轮链接工作,所以我从assets/javascripts/application.js文件中删除//= require turbolinks行。