問題
画像を以下のように指定しており、ローカル環境(development)では正常に動作していた
スポンサーリンク
画像のパスは、app/assets/images/
<%= image_tag('gazou.png', :width =>'112', :height =>'auto', :alt => '画像') %>しかし! 本番環境では、表示されない...
ブラウザの開発者モードで見るかぎりパスが違っている様子
スポンサーリンク
解決策
asset_path()を使用する
<%= image_tag asset_path('gazou.png', :width =>'112', :height =>'auto', :alt => '画像') %>原因
どうやら、本番環境(production環境)では、画像もコンパイルされる模様。
本番環境と開発環境での違いは、
- パスが変わる(app/assets/images/gazou.png => /assets/gazou.png)
- 名前が変わる(gazou.png => gazou-xxx... .png) ※xxx... はdigest
の2点。
両方に対応するための、asset_path()
Rails4での assets:precompile
productionにdeployするときに実行する assets:precompile ですが、
Rails4からは digest無しのjs, css, image は作成しない仕様になったようです
digestとはjs, css, 画像等を assets:precompile するとファイル名の後ろにつく文字列のこと
そのため、Railsが提供している関数asset_path()を呼ぶことで、productionのときにはdigestを勝手に付与してもらうようにする。
スポンサーリンク