Rails 5用turbolink加载JS

时间:2017-03-07 01:11:12

标签: javascript jquery ruby-on-rails turbolinks

我很难在没有重新加载页面的情况下使javascript工作。我认为这个问题与turbo链接有关。

我正在为这样的表单设置一个onsubmit监听器

<%= 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");
     }
   })
}

当我重新加载页面时,一切都很完美,但是当我通过链接进入页面时,javascript不会被调用。奇怪的是event.preventDefault()正在发挥作用。当我完全删除javascript时,表单将像普通的html表单一样提交。我是jquery的新手,无法弄清楚如何加载javascript。

2 个答案:

答案 0 :(得分:2)

这可能是一个涡轮问题。在您的javascript文件中,使用

包围您的javascript代码
$(document).on('turbolinks:load', function() {
  // your code
});

答案 1 :(得分:0)

所以这与turbolinks有关。我无法弄清楚如何使其与turbo链接一起使用,因此我从docker/daemon/network.go docker/api/types/swarm/network.go 文件中删除了//= require turbolinks行。