【发布时间】:2013-09-17 13:51:16
【问题描述】:
我的 assets/javascripts/ 目录中有一个 js 文件。这个文件被 rails 正确拾取(当我检查页面的 head 标签时,我可以在 firebug 中看到它)
我正在我的 application.js 中从这个 js 文件调用一个函数,如下所示:
//
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require_tree .
$(window).load(function(){
Boxlayout.init();
});
我在某处读到,init() 函数必须用.load 函数调用,以便在加载 DOM 后调用它们。
但是这里的 javascript 不起作用。
相反,当我明确包含 js 文件时:
<%= javascript_include_tag "file.js" %>
在页面底部并从 application.js 调用相同的 init 函数,javascript 工作正常。
我不想明确包含该文件。 (想用rails的方式来做)。那么我该如何使用第一种方法呢?
编辑
使用 Rails 3.2.14(无 Turbolinks)。
虽然 Javascript 在本地运行良好,但 无法在 Heroku 上运行。
【问题讨论】:
-
请显示您的 application.js 文件
-
@lol007 更新了问题
-
顺便说一句,
.load(…)在 jQuery 1.8 中已被弃用;你应该使用.on("load", …)。 -
你在使用turbolinks吗?如果是这样, $(window).load 将不会被调用。 Turbolinks 替换了页面的正文,这就是当您将脚本嵌入正文时运行脚本的原因。
-
@superluminary 不。我使用的是 Rails 3.2.14,没有 turbolinks。
标签: javascript ruby-on-rails asset-pipeline