Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rails:在页面末尾调用Javascript函数_Javascript_Ruby On Rails_Asset Pipeline - Fatal编程技术网

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

Rails:在页面末尾调用Javascript函数,javascript,ruby-on-rails,asset-pipeline,Javascript,Ruby On Rails,Asset Pipeline,我的assets/javascripts/目录中有一个js文件。rails正确地拾取了该文件(当我检查页面的标题时,我可以在firebug中看到它) 我在我的application.js中从这个js文件调用一个函数,如下所示: // //= require jquery //= require jquery_ujs //= require bootstrap //= require_tree . $(window).load(function(){ Boxlayout.init();

我的assets/javascripts/目录中有一个js文件。rails正确地拾取了该文件(当我检查页面的
标题时,我可以在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(无涡轮链接)

另外,Javascript在Heroku上不起作用,尽管它在本地运行良好。

尝试更改

$(window).load(function(){
进入


您有//=require\u树。在application.js中,我们将尝试在assets/javascripts/directory中创建新文件*.js,并将代码附加到其中。

我认为这是turbolinks的问题

当您单击链接时,Turbolinks会通过AJAX交换页面的主体,但头部保持不变。由于CSS和JavaScript仅在浏览会话开始时下载和解析,因此速度显著提高

缺点是不会触发jQuery加载事件。这解释了为什么在将脚本嵌入页面主体时执行脚本,而不是在将脚本正确放置在头部时执行脚本

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


显示你的application.js文件,please@lol007将问题更新为旁白,在jQuery 1.8中被弃用;你应该使用。你在使用TurboLink吗?如果是,则不会调用$(window).load。Turbolinks会替换页面的主体,这就是为什么在将脚本嵌入主体时会运行脚本的原因。@superluminary no。我使用的是Rails 3.2.14,没有TurboLink。请注意,这意味着一些不同的东西
load
将等待所有图像和CSS完成下载,而
ready
将在HTML下载完毕并且DOM加载到内存后立即运行。当我删除js的
时,这仍然不起作用file@RoryO“凯恩,我想使用
.load
功能。想在所有css都加载后超越js。那又怎样?我知道,我不使用涡轮链接。
$(document).ready(function(){