![](/img/trans.png)
[英]Rails 6 Amazon S3 Error POST 403 (Forbidden) using s3_direct_upload gem
[英]Object has no method 'S3Uploader' with rails s3_direct_upload
tl; dr:當自定義jQuery函數在開發中消失時,您可能需要刪除以前預先編譯的public / assets / javascripts / application.js文件
我有一個已部署到Heroku的Rails應用程序,然后想添加s3_direct_upload以使用戶將文件上傳到Amazon Web Services(AWS)S3。 我使用位於http://blog.littleblimp.com/post/53942611764/direct-uploads-to-s3-with-rails-paperclip上的綜合教程,在https://github.com/thoughtbot/paperclip_demo上修改了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 Javascript都單獨包含在生成的.html中,但也包含了application.js,並且還包含了似乎是jQuery的壓縮版本。 我的app / assets / javascripts / application.js包含用於加載Zurb Foundation javascript的行。
正如在rails app中雙重包含的JS文件中指出的那樣,當Rails Javascript似乎被雙重加載時,問題可能在於您先前已經預先編譯了資產,這是部署到Heroku時通常需要的。
如此處所述,解決方案是刪除public / assets / application.js(和application.js.gz)
當我這樣做時,s3_direct_upload適用於較大的應用程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.