我正在使用Rails 3.1中的Web应用程序,完全(我认为)利用css,images和js的资产管道。当我尝试实现jQuery插件时,我遇到了一个非常一致的问题。我已经能够在一个案例中解决它,但在另一个案例中却没有,我正在试图弄清楚关键问题是什么。
基本上,我将加载一个jQuery插件,然后在我的document.ready
方法中调用它,结果发现拉起网站的结果(例如,在jScrollPane插件的情况下)
Uncaught TypeError: Object #<Object> has no method 'jScrollPane'
我收到了其他几个插件的相同错误。我认为可能是因为我的插件之前没有加载jQuery / jQuery-UI,所以它们没有被正确实例化,但似乎并非如此。必要的脚本位于app/assets/javascripts/...
我的app/assets/application.js
我有以下内容:
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require jquery.mousewheel
//= require mwheelIntent
//= require jquery.jscrollpane.min
//= require_tree .
除了错误之外,结果application.js
似乎是正确的;也就是说,我希望那里的一切都在那里。
我做错了什么?我很乐意提供所需的任何其他信息。
答案 0 :(得分:3)
如果你没有经常使用资产管道,那么如果你有预先编译并转储到public/assets/application.js
的资产,那么预编译文件可能会破坏文件,因为它们是由开发资产管道,因此您在/app/assets/application.js
中包含的插件将被覆盖。
换句话说,你在这里用这个片段精心构建的前一个所有歌唱,全舞蹈的jquery对象:
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require jquery.mousewheel
//= require mwheelIntent
//= require jquery.jscrollpane.min
//= require_tree .
被public/assets/application.js
中描述jQuery对象的已编译代码覆盖。
嗯,当我正在调试的页面表现出与此相似的行为时,这就是我的意思。
答案 1 :(得分:0)
使用Javascript的压缩器可能会对插件的编码风格感到挑剔。
我发现在一些情况下,如果插件缺少关闭,则找不到代码;在末尾。压缩器可以重命名下一个函数,如果它认为它在preceding块内。
尝试重新排序插件,看看是否更改了丢失的方法。这可能会让你知道失踪的地方;是的,如果这是问题。