1

CarrierWave を使用して、Web ページに画像をアップロードしています。現在、Amazon S3 と Heroku で動作しています。ただし、ローカルホストを使用して自分のマシンでテストできるようにしたいと考えています。繰り返しますが、私はこれを機能させています。ただし、アップロードした写真は、次の場所にあるアプリの tmp ディレクトリに保存しています。

Users/.../app/tmp/uploads.

画像を表示しようとすると、リンクが壊れます。私は使用しています:

<img src='<%= bucket.path %>'/>

画像を表示し、Heroku で動作しています。ローカルホストでは、次のエラーが発生します。

ActionController::RoutingError (No route matches [GET] "/Users/.../app/tmp/uploads/pic.jpeg")

本当にどうすればいいのかわからないので、パスを提供するだけで十分だと思いました。助けてくれてありがとう!

4

1 に答える 1

0

霧を使っていますか?この返信は、あなたがそうであることを前提としています。

/config/environments/development.rb で、以下を設定できるはずです:

config.uploadsURL = "http//localhost:3000"
config.serve_static_assets = true

/config/initializers/carrierwave.rb:

if Rails.env.production?
    # your aws config stuff
else
    config.storage   = :file
end

ビューでは(私が何かを忘れていない限り)、次のことができるはずです:

<%= image_tag(image.imgUpload.mini) if image.imgUpload? %>

「mini」はキャリアウェーブのバージョンで、imgUpload はモデルで定義したマウントです。

mount_uploader :imgUpload, ImageUploader

もちろん、AWS ストレージを使用しながら、localhost でテストできるはずです。/config/environments/development.rb を次のように変更する方が簡単かもしれません:

config.action_controller.asset_host = "//#{ENV['FOG_DIRECTORY']}.s3.amazonaws.com"

config.action_controller.asset_host = "//your-test-bucket.s3.amazonaws.com"

localhost で実行している間は AWS を使い続けます。

于 2013-01-23T20:44:26.223 に答える