我试图在某种程度上遵循这个rails cast 来让 jQuery-fileuploader 在 rails 和carrierwave 中工作。我有carrierwave,其他一切都很好,但是当我尝试使用jquery-fileupload-rails时,我一直收到同样的错误:Uncaught TypeError: Object [object Object] has no method 'fileupload'
. 当我尝试$(selector).fileupload()
在控制台中运行时也是如此。
宝石文件:
source 'http://rubygems.org'
gem 'rails', '3.2.16'
gem 'mysql2'
gem 'jquery-rails'
gem 'rest-client'
gem 'will_paginate'
gem 'simple_form'
gem 'chronic'
gem 'nokogiri'
gem 'carrierwave'
group :assets do
gem 'sass-rails'
gem 'coffee-rails'
gem 'uglifier'
gem 'jquery-fileupload-rails'
end
应用程序/资产/javascripts/application.js
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require bootstrap_ujs
//= require jquery-fileupload/basic
//= require_tree .
当我//= require jquery-fileupload
在上面时也会发生这种情况。
我检查了头部,所有脚本都以正确的顺序加载:
<script src="/assets/jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap_ujs.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery-fileupload/vendor/jquery.ui.widget.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery-fileupload/jquery.iframe-transport.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery-fileupload/jquery.fileupload.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery-fileupload/basic.js?body=1" type="text/javascript"></script>
<script src="/assets/uploads.js?body=1" type="text/javascript"></script>
<script src="/assets/application.js?body=1" type="text/javascript"></script>
在开发控制台中分析脚本时:
脚本这应该是一个空白文件,因为它包含的只是资产管道中包含的文件。jquery-fileupload/basic.js
只有 5 个空白行……这应该是什么?该
jquery-fileupload/jquery.fileupload.js
脚本充满了东西,但是当我将整个文件复制并粘贴到控制台并按 Enter 时,它会输出:
Object function ( selector, context ) { // The jQuery object is actually just the init constructor 'enhanced' return new jQuery.fn.init( selector, context, rootjQuery ); } has no method 'widget'
我正在运行捆绑安装,卸载然后重新安装 gem 并重新启动服务器(多次)。经过 5 个小时的失败后,我重新开始并再次尝试。它失败了。
更新:
如果我将整个jquery-fileupload/vendor/jquery.ui.widget.js
文件复制粘贴到控制台中,然后将整个文件复制粘贴jquery-fileupload/jquery.fileupload.js
到控制台中,我没有收到上面列出的错误,并且 fileuplaod 方法突然可以调用。这对我来说毫无意义,因为如果它按此顺序包含在头部中,它应该按此顺序运行并且在$(selector).fileupload()
被调用时可用。