Rails:在页面末尾调用Javascript函数

时间:2013-09-17 13:51:16

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

我的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 3.2.14 (无Turbolinks)。

此外,Javascript 无法在Heroku上运行虽然它在本地运行正常。

3 个答案:

答案 0 :(得分:1)

尝试更改

$(window).load(function(){

$(document).ready(function(){

答案 1 :(得分:0)

你有// = require_tree。在application.js中,我将尝试在assets / javascripts /目录中创建新文件* .js,并在那里附加你的代码。

答案 2 :(得分:0)

我认为这是一个涡轮机问题。

Turbolinks在您点击链接时通过AJAX交换页面正文但保持头部完好无损。因为CSS和JavaScript只在浏览会话开始时下载和解析,所以你可以大大提高速度。

缺点是你的jQuery加载事件不会被触发。这解释了当您将脚本嵌入页面主体时执行脚本的原因,而不是将脚本正确放置在头部时。

尝试包含jQuery turbolinks gem。这将在激活turbolink时触发预期的jQuery事件。

https://github.com/kossnocorp/jquery.turbolinks