2011-09-24 71 views
0

我正在使用Rails 3.1中的Web应用程序,完全(我认为)利用CSS,图像和js的资产管道。当我尝试实现jQuery插件时,我遇到了一个相当一致的问题。我已经能够在一种情况下解决问题,但不能解决问题,我试图找出关键问题。jQuery插件和Rails 3资产管道 - 我做错了什么?

从本质上讲,我会加载一个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

缺少'jquery.jscrollpane.min'行上的要求? – lloydpick

+0

对不起,这是(不幸!)只是一个错字,将编辑。 – Pygmalion

+0

看到它显示正常,它可能会帮助约1%,但检查你的application.rb的东西可能看起来有点关闭,如config.assets.enabled = false –

回答

0

使用JavaScript的压缩器可能会对插件的编码风格感到烦恼。

我发现在一些情况下,如果插件缺少结束码,找不到代码;最后。如果压缩机认为它位于预先模块内,则可以重命名下一个函数。

尝试重新排序你的插件,看看是否改变了缺少的方法。这可能会让你知道失踪的地方,是的,如果这是问题。

+0

这是一个好点,我会给这是一个尝试,看看我是否拿出任何东西。 – Pygmalion

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对象已编译的代码覆盖。

那么,当我正在调试的一个页面展现出与这个页面非常相似的行为时,就是这样。

+0

谢谢,这让我坚持了一天。 – you786

+0

哦,男人,花了很多时间试图弄清楚什么是错的。很简单。谢谢 – cgat