2017-03-07 26 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行。