JavaScript库在Rails中加载两次

JavaScript library loads twice in Rails

本文关键字:两次 加载 库在 Rails JavaScript      更新时间:2023-09-26

当我将JavaScript库添加到Rails资产文件夹并在我的erb文件中配置时,使用:<%= javascript_include_tag('scripts.js') %>,HTML代码和与JavaScript文件相关联的类加载两次。

我在这里附上了一个例子。当我将JavaScript文件链接到公用文件夹时,这个问题不会发生,但JavaScript不会显示。

JavaScript

$(function() {
    $("a.page-scroll").bind("click", function(a) {
        var b = $(this);
        $("html, body").stop().animate({
            scrollTop: $(b.attr("href")).offset().top
        }, 1500, "easeInOutExpo"), a.preventDefault()
    })
})

Html.erb

<li>
    <a class="page-scroll" href="#portfolio">Portfolio</a>
</li>
<li>
    <a class="page-scroll" href="#me">About Me</a>
</li>
<li>
    <a class="page-scroll" href="#contact">Contact</a>
</li>

没有相关的控制台错误。

注意:这在没有Rails的情况下运行得非常好。

如果这是一个开箱即用的标准rails项目,并且javascript/coffee文件位于lib/assets/javascripts或vendor/assets/javascripts中,那么它将通过application.js文件中的这一行自动拉入rails资产管道:

//=require_tree。

如果erb文件是由application.js拉入的,则不需要在erb文件中使用javascript_include_tag(我假设application.js是由某个布局文件通过javascript_ininclude_tag("application")渲染的,这就是它渲染两次的原因)。

如果js文件位于其中一个目录中,并且您从erb文件中删除了javascript_include_tag。。。。它应该可以解决双重渲染问题。