2012-07-11 37 views
0

我正在使用Rails 3.2.6并试图集成Rails S3 Fancy uploader,我认为这可能是一个误解,我如何使用原型,jquery和mootools在相同时间,或只是将其迁移到更新版本的Rails。Jquery,原型,mootools和rails 3花式上传器

我已经包括资产管道(prototype.js中& mootools.js库位于/资产/ JavaScript的文件夹,以及所有的源文件“fancyuploader”类似于后恢复正常的jQuery在noconflict模式如何/公用文件夹定向在GitHub库)

<%= javascript_include_tag "application" %> 
<script type="text/JavaScript> 
jQuery.noConflict(); 
</script> 

不过,我还是得到了很多不确定的错误,我认为它与资产被加载到的顺序做页。

Uncaught TypeError: Object [object Window] has no method 'addEvent' script.js:10 
Uncaught TypeError: Object [object Window] has no method 'addEvent' script.js:10 
Uncaught ReferenceError: Class is not defined FancyUpload2.js:15 
Uncaught ReferenceError: Class is not defined FancyUpload3.Attach.js:15 
Uncaught ReferenceError: Class is not defined FancyUpload3.S3Uploader.js:27 
Uncaught ReferenceError: Fx is not defined Fx.ProgressBar.js:13 
Uncaught ReferenceError: Swiff is not defined Swiff.Uploader.js:14 
Uncaught ReferenceError: Class is not defined Uploader.js:13 
Uncaught TypeError: Cannot read property '0' of undefined prototype.js:6719 

它看起来像MooTools的和原型是不可用的脚本创建所需的“FancyUploader”


该项目运行在的Rails 3.0.7就好了,与资产在公用文件夹haml模板引擎中的源代码(我用的是erb,但这是我想的一个JS问题),不过我也注意到的原型似乎没有被引用在作者中包括??

= javascript_include_tag('mootools.js', 
           'fancyupload/source/Fx.ProgressBar', 
           'fancyupload/source/Swiff.Uploader', 
           'fancyupload/source/FancyUpload3.Attach', 
           'fancyupload/source/FancyUpload3.S3Uploader') 

回答

3

好。你在这里遇到问题,你的堆栈不兼容。

  • 的jQuery +原型= OK
  • 的mootools + jQuery的= OK
  • 的mootools +原型=失败

原因很简单 - 两者都是典型的和,而你可以命名空间中的$,使确保播放效果很好,你不能命名空间类型protos,MooTools和Prototypejs都不会试图隐藏/命名空间它们的全局对象导出,所以会有不可避免的冲突。

重新考虑你使用什么的时候,有2个框架是不赞成的,有3是过度杀伤。

+0

啊,我明白了,所以原作者可能根本不使用'prototype'!因此,我没有看到它的参考。我想我需要更多地了解为什么'Class'原型没有从库中实例化或崩溃。我认为我会坚持使用'mootools',因为它看起来是原始脚本使用的。 – 2012-07-11 15:11:15

+1

那么,最初的fancyupload是由Harald(digitarald)以前的mootools核心团队所以是的,没有jquery,没有原型:) – 2012-07-11 16:12:25

0

为什么你不 http://mootools.net/forge/p/mooupload

支持新的HTML5块上传,Flash上​​传和正常的HTML4上传试试。它有一个很好的进度条,并允许您同时上传多个文件(加上HTML5和Flash上​​传方法的多个文件选择)。

Mooupload使用“document.id”而不是$,所以它应该与JQuery一起工作。