2011-12-29 8 views
0

私はユーザーが画像をアップロードするレール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を使用して画像を保存しています。 –

1

画像のアップロードにはcarrierwaveを使用していますか?あなたは、搬送波で合理的に簡単なアマゾンS3にそれらを格納することができます。 Carrierwave instructions他のソリューションでもS3ストレージに簡単にアクセスできます。

Herokuは、ファイルシステムにファイルを保存させません。

RAILS_ENV=production bundle exec rake assets:precompile

は、ローカルにあなたの資産をコンパイルgitのために追加し、Herokuのにプッシュするために実行していますが、後でHerokuの上でアプリケーションを経由して画像を追加することはできません。彼らを/tempフォルダにアップロードすると、しばらくの間、またはコードを再展開/更新するまでそこにとどまります。

関連する問題