Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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
jQuery在Rails 3中的加载异常_Jquery_Ruby On Rails_Ruby On Rails 3_Coffeescript - Fatal编程技术网

jQuery在Rails 3中的加载异常

jQuery在Rails 3中的加载异常,jquery,ruby-on-rails,ruby-on-rails-3,coffeescript,Jquery,Ruby On Rails,Ruby On Rails 3,Coffeescript,我有一个带有标准资产管道的Rails 3.2应用程序——也就是说,controller在单独的CoffeeScript文件中定义了自己的Javascript 我今天注意到,在开发模式中(当所有JS文件都在每个页面上单独加载时),它们在某一点后停止工作。我想这是因为上面的一个文件中有一个神秘的错误。控制台显示两个与该页面上找不到的元素相关的错误(这是意料之中的,因为它们来自不同的控制器) 但是,我查看了生产应用程序,同样的事情正在发生。我在主页的页面控制器上,查看了小型化的JS文件,找到了一个完全

我有一个带有标准资产管道的Rails 3.2应用程序——也就是说,controller在单独的CoffeeScript文件中定义了自己的Javascript

我今天注意到,在开发模式中(当所有JS文件都在每个页面上单独加载时),它们在某一点后停止工作。我想这是因为上面的一个文件中有一个神秘的错误。控制台显示两个与该页面上找不到的元素相关的错误(这是意料之中的,因为它们来自不同的控制器)

但是,我查看了生产应用程序,同样的事情正在发生。我在主页的页面控制器上,查看了小型化的JS文件,找到了一个完全独立的控制器的引用。同样的错误也出现了,表示在该页面上找不到元素。同样,在那一点之后的JS都失败了,无法工作

我假设Rails只编译了JS控制器?如果不是这样的话,我该怎么做才能让某些JS只出现在某些页面上呢


提前感谢您的帮助

您可以将函数放在if语句后面,这样它们只有在页面上有某些元素时才会启动

if $("#element-id")
  namedFunction = ->
    etc....

这是资产管道的默认行为,我相信,您可以单独加载它们,看到这个答案,但您还需要考虑性能,通过将所有内容都编译到一个文件中,您有一个HTTP请求,而不是许多HTTP请求,然后可以缓存这些请求,从而增强performanceJustin,您在页面上收到的错误正在破坏您的JS(或JS加载的其余部分)。修复这些错误,然后看看是否可以重现不工作的错误part@Richlewis-我认为将它们全部放在一个文件中最有意义,否则每个页面都需要单独下载不同的小型文件。但是,如何在jQuery/CoffeeScript中指定只在某些页面上运行某些函数?我的错误是由于用户不在页面上,选择器的元素丢失…@ilanberci-是的,我知道这就是导致问题的原因,我知道这些错误(参见上文,关于元素不在页面上)。我更想知道如何在不存在元素的页面上加载这些JS文件。谢谢,这样做很有效,只是没有
>0
,所以只要
if$('#element').length{}