簡體   English   中英

對象沒有使用導軌s3_direct_upload的方法“ S3Uploader”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM