2017-07-14 1 views
0

画像は本番モードでは表示されません。開発環境でうまくいきます。画像が本稼働モードで表示されない

は例えば、画像は、次のコード

<img alt="" class="img-circle" src="/assets/avatar.jpg"> 

ために表示されず、それは、次のHTML

<img class="img-circle" width="29" src="/assets/avatar-cabb5744ce203e3fd174df28be60bfb942d35013b57513680aadda2ba9602762.jpg" alt="Avatar cabb5744ce203e3fd174df28be60bfb942d35013b57513680aadda2ba9602762"> 

Production.rb

を生成IMAGE_TAG

<%= image_tag 'avatar.jpg',class:"img-circle", :width=>'29' %> 

ために働きます

config.serve_static_files = false 

    config.assets.js_compressor = :uglifier 

    config.assets.compile = false 

    config.assets.digest = true 

ファイルavatar.jpgは、実際にはassets/imagesフォルダにあります。

実際の問題は何ですか?これをどうやって解決するのですか?

+2

+0

これはうまくいきますが、実際に画像がassets/imagesフォルダで利用可能になったときに、URL「/assets/avatar.jpg」が画像を提供しない理由が混乱しています – prajeesh

+0

説明については、@ tadmanの答えを確認してください... –

答えて

1

そのような資産にはimage_tagを使用する必要があるからです。パスをハードコーディングすることはできません。なぜなら、それらのアセットをコンパイルしてハッシュ化するときにパスが変わるからです。

Railsは、特定のリビジョンで名前が一意であることを保証するために、各静的資産に対してコンテンツハッシュを実行します。これにより、変更を加えるためにユーザーをリフレッシュさせる必要があるキャッシュ・バスト処理の問題が回避され、変更されていないアセットのキャッシュも保持されます。

最終的な名前は予測不可能なため、アプリケーションが運用モードで実行されているときに計算するには、image_tagを使用する必要があります。

関連する問題