Rails 5 JavaScript资产管道问题

时间:2018-03-22 16:10:50

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

我正在尝试在我的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如何加载资产管道,但对于我的生活,我无法弄清楚它出错的地方。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

问题似乎是你的Javascript在它存在于DOM之前调用<body>标记。这就是你收到错误的原因:

TypeError: document.body is null

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