如果我返回一页(OwlCarousel,DataTables),Rails会重复Webpacker包



我有一个Rails应用程序,如果我回到应该呈现包的页面,它会重复包。例如,我的OwlCarousel有两个图像,它会成倍增加,并在前一个图像的顶部叠加旋转木马导航。

简要GIF解释

#app/views/layouts/application.html.erb
<!DOCTYPE html>
<html>
<head>
<title>CRISPR Citrus</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<%= csrf_meta_tags %>
<%= csp_meta_tag %>


<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= stylesheet_pack_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %> 
</head>
<body>
<%= yield %>
</body>

</html>
#app/javascript/packs/application.js
import Rails from "@rails/ujs"
import Turbolinks from "turbolinks"
import * as ActiveStorage from "@rails/activestorage"
import "channels"
require("jquery");
import '@popperjs/core'
//Owl Carousel
import "../js/owlcarousel"
Rails.start()
Turbolinks.start()
ActiveStorage.start()
#app/javascript/js/owlcarousel.js
import 'owl.carousel/dist/assets/owl.carousel.css';
import 'owl.carousel';
import "owl.carousel/dist/assets/owl.theme.default.min.css"      
$( document ).on('turbolinks:load', function() {
$(function () {
$('.owl-carousel').owlCarousel(
{
items: 1,
loop: true,
autoplay: true
}
);
});
})
#owl carousel is simply called like this:
<div class="owl-carousel owl-theme owl-theme-dark">
<%= image_tag "tmp/test_genotyping.png", alt:"", width:""%> 
<%= image_tag "tmp/test_genotyping.png", alt:"", width:""%> 
</div>

我认为OwlCarousel可能有一种在重新加载之前摧毁自己的方法,我可以在owlcarousel.js中添加,但我认为这将是一种";补丁";一个持续存在的问题。这应该发生吗?

问题持续

如果将来有人读过这篇文章,这就是我找到的解决方案。

只需添加:

#in app/views/layouts/application.html.erb
<head>
...
<meta name="turbolinks-cache-control" content="no-cache">
...
</head>

我无法使它适用于特定的视图,所以我只是对应用程序中的每个视图都这样做。如果有人知道如何在视图中直接实现它,我很感兴趣。

最新更新