件のポートフォリオを作成後、heroku
にてデプロイし次にAWS
へのデプロイに挑戦しました。
その際にapp/assets/images
下にあるロゴ画像が表示されなかった時の対処の話です。(下記参照)
目次
-
heroku
でも起きていた現象 -
AWS
では、原因が異なる - 今回の解決策
herokuでも起きていた現象
- 画像が読み込まれない現象は
heroku
の初期でも起きていました。 - 原因はプリコンパイル関連でサクッと解決。
AWSでは、原因が異なる
読み込みミスした記述.
<%= link_to root_path, class: "navbar-brand" do %>
<img class="logo"src="/assets/images/ロゴ.png">
<% end %>
- 検証の
console
には404
が表示されていたのでパスが違うみたい - 色々渡り歩くき、以下の内容を見つける
本番環境では、画像もコンパイルされ、画像ファイル名が変わりディレクトリも変わってしまいます!
-
assets_path
が有効らしいと判明
解決策
-
Railsガイドを参照し,
assets_path
の使い方を見る。 -
iimage_tag
とassets_path
で組める。
完成コードは以下
.erb
<%= link_to root_path do %>
<%= image_tag asset_path('ファイル名.png') %>
<% end %>
これでlocal
もproduction
も無事表示されました。