我有一個用戶上傳圖片的rails 3.1應用程序。我將它們存儲在/ assets/images中,因爲這是image_tag尋找的路徑而不是public/images。預編譯上傳的資產
一切工作的發展不錯,但我部署到Heroku的,這讓我這個錯誤:
ActionView::Template::Error (image_name.jpeg isn't precompiled)
什麼是處理這種情況的正確方法?上傳後是否有編譯圖像的方法,或者我應該將它們存儲在其他位置?
我有一個用戶上傳圖片的rails 3.1應用程序。我將它們存儲在/ assets/images中,因爲這是image_tag尋找的路徑而不是public/images。預編譯上傳的資產
一切工作的發展不錯,但我部署到Heroku的,這讓我這個錯誤:
ActionView::Template::Error (image_name.jpeg isn't precompiled)
什麼是處理這種情況的正確方法?上傳後是否有編譯圖像的方法,或者我應該將它們存儲在其他位置?
您不得使用在Heroku上的文件系統來存儲上傳。
您不應該使用image_path
與上傳的圖像,因爲它假定它正在查看文件系統。如果您使用image_tag
,則必須傳遞一個完整的URL,而不僅僅是一個圖像名稱。
您是否在使用carrierwave進行圖片上傳?您可以使用載波將它們存儲在亞馬遜S3上。 Carrierwave instructions其他解決方案也可輕鬆訪問S3存儲。
Heroku不會讓你在文件系統中存儲文件。運行
RAILS_ENV=production bundle exec rake assets:precompile
編譯你的資產在本地,增加的git,並推到Heroku的,但你不能通過你在Heroku上的應用程序在以後添加圖像。如果你將它們上傳到/temp
文件夾中,他們將在那裏停留一段時間,或者直到你重新部署/更新你的代碼,我相信。
你是對的,我現在用S3來存儲圖像。 – 2011-12-29 15:18:41