2011-12-29 133 views
0

我有一個用戶上傳圖片的rails 3.1應用程序。我將它們存儲在/ assets/images中,因爲這是image_tag尋找的路徑而不是public/images。預編譯上傳的資產

一切工作的發展不錯,但我部署到Heroku的,這讓我這個錯誤:

ActionView::Template::Error (image_name.jpeg isn't precompiled)

什麼是處理這種情況的正確方法?上傳後是否有編譯圖像的方法,或者我應該將它們存儲在其他位置?

回答

2
  • 不得使用在Heroku上的文件系統來存儲上傳。

  • 您不應該使用image_path與上傳的圖像,因爲它假定它正在查看文件系統。如果您使用image_tag,則必須傳遞一個完整的URL,而不僅僅是一個圖像名稱。

+0

你是對的,我現在用S3來存儲圖像。 – 2011-12-29 15:18:41

1

您是否在使用carrierwave進行圖片上傳?您可以使用載波將它們存儲在亞馬遜S3上。 Carrierwave instructions其他解決方案也可輕鬆訪問S3存儲。

Heroku不會讓你在文件系統中存儲文件。運行

RAILS_ENV=production bundle exec rake assets:precompile

編譯你的資產在本地,增加的git,並推到Heroku的,但你不能通過你在Heroku上的應用程序在以後添加圖像。如果你將它們上傳到/temp文件夾中,他們將在那裏停留一段時間,或者直到你重新部署/更新你的代碼,我相信。