问题:
我有一个基于Spree 3.7和Rails 5.2构建的电子商务应用程序,现在我面临的是turbolink(版本5.2.0)问题,其中我已经实现了将JavaScript添加到购物车中的JavaScript,但是js方法触发了两次,同类商品已两次添加到购物车中。
我已将以下js包含在头部标签中-
<script>
<%= javascript_include_tag 'spree/frontend/all' %>
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
</script>
我尝试过'data-turbolinks-track':'true / false',但是删除后我的问题解决了
<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
。
我从“ https://github.com/turbolinks/turbolink”那里了解了turbolink。据我说,turbolink两次加载javascript方法。
关于如何解决它的任何建议?
评论后,这是我的application.js文件
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file. JavaScript code in this file should be added after the last require_* statement.
//
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require activestorage
//= require turbolinks
//= require cable
//= require jquery-ui/widgets/sortable
//= require wishlist
//= require product
//= require cart
答案 0 :(得分:0)
根据您的评论,本地可能有两个版本的已编译资产。尝试运行rake assets:clobber
以清除其他资产。
答案 1 :(得分:0)
所以基本上我能够解决这个问题,根据Turbolink的说法,我们的javascript应该包装在
中document.addEventListener("turbolinks:load", function () { ... }
我们的狂欢功能(如addToCartForm等)可在$( document ).ready()
所以我已经覆盖了这些功能,并包装在turbolinks:load
中,现在一切正常。