tl; dr:当自定义jQuery函数在开发中消失时,您可能需要删除以前预编译的public / assets / javascripts / application.js文件
我有一个已部署到Heroku的rails应用程序,然后想添加s3_direct_upload以允许用户将文件上传到Amazon Web Services(AWS)S3。我使用https://github.com/thoughtbot/paperclip_demo上的精彩综合教程在http://blog.littleblimp.com/post/53942611764/direct-uploads-to-s3-with-rails-paperclip-and修改了paperclip_demo应用
但是,虽然修改后的paperclip_demo工作正常,但当我尝试将该代码迁移到更复杂的应用程序时,请使用以下Javascript:
$(function() {
$('#s3_uploader').S3Uploader(
{
remove_completed_progress_bar: false,
progress_bar_target: $('#uploads_container')
}
);
$('#s3_uploader').bind('s3_upload_failed', function(e, content) {
return alert(content.filename + ' failed to upload');
});
});
我在浏览器的Javascript调试器中收到错误
Uncaught TypeError: Object [object Object] has no method 'S3Uploader'
但是,包含了s3_direct_upload.js,并包含了
行 $.fn.S3Uploader = function(options) {...}
应该为jQuery定义了S3Uploader函数。
我注意到,尽管所有jQuery Javascripts都单独包含在生成的.html中,但application.js也包含在内,并且包含了jQuery的压缩版本。我的app / assets / javascripts / application.js包含了加载Zurb Foundation javascript的行。
答案 0 :(得分:0)
如JS files double-included in rails app所述,当Rails Javascripts似乎被双重加载时,问题可能是您之前预先编译了资产,这是部署到Heroku时通常所需的。
如前所述,解决方案是删除public / assets / application.js(和application.js.gz)
当我这样做时,s3_direct_upload适用于我的大型应用程序。