【问题标题】:JavaScript library loads twice in RailsJavaScript 库在 Rails 中加载两次
【发布时间】:2015-12-21 04:14:48
【问题描述】:

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

我附上了一个例子here。当我将 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 也可以正常工作。

【问题讨论】:

  • 我建议显示一些代码而不是 gif。
  • 视频并没有告诉我们太多。您有可以分享的相关控制台消息吗?
  • 它是什么 JavaScript 库?你的script.js 代码是什么样的?

标签: javascript ruby-on-rails


【解决方案1】:

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

//= 要求树。

如果 erb 文件中的 javascript_include_tag 被 application.js 拉入,则无需使用 javascript_include_tag(我假设 application.js 正在通过 javascript_include_tag('application') 由某个布局文件呈现,这就是为什么它渲染两次)。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多