【问题标题】:Rails 5 JavaScript asset pipeline issueRails 5 JavaScript 资产管道问题
【发布时间】:2018-09-01 04:11:14
【问题描述】:

我正在尝试在我的 rails 应用程序中加载一些 JavaScript,如下所示:

Application.html.erb(在头部)

<%= javascript_include_tag 'application' %>

Application.html.erb(在 HTML 结尾之前)

<script>
  $(document).ready(function() {
    notie.alert(1, "It Works", 2);
  });
</script>

Application.js

//= require rails-ujs
//= require turbolinks
//= require theme/jquery
//= require theme/bootstrap
//= require theme/select2
//= require theme/notie
//= require theme/plugins
//= require theme/app
//= require_tree .

使用此设置,我收到以下错误:

TypeError: document.body is null
TypeError: notie is undefined

在我看来,错误可能是由于 turbolinks 以及 JS 是如何加载资产管道的,但对于我来说,我无法弄清楚哪里出了问题。任何帮助表示赞赏。

【问题讨论】:

  • 您是否尝试过删除//= require_tree . 并将//= require turbolinks 移至底部?
  • 是的,我试过了。没有骰子。
  • 您是否尝试过创建一个新的 .js 文件,用新资产的 //= require 填充它,并将 &lt;%= javascript_include_tag 'new' %&gt; 放在结束正文标记之前? stackoverflow.com/questions/9916747/…
  • 这样做了,将新文件添加到 assets.rb 中进行预编译并让它工作!干杯朋友

标签: javascript ruby-on-rails asset-pipeline


【解决方案1】:

问题似乎是您的 Javascript 在它存在于 DOM 之前调用了 &lt;body&gt; 标记。这就是您收到错误的原因:

TypeError: document.body is null

对于这样的 Javascript,最好将其加载到页面底部而不是头部。

【讨论】:

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