こんにちは。さとうです。
今回はimage_tagを使わずにassets内の画像を指定する方法についてです。
結論
image_path("test.png")
上記のようにimage_path() を使えばOKです!
/assets/images/test.png のように直接指定するのはNGです。
もう少し詳しく
まず、Railsでコンパイルされたファイルには以下のようにハッシュ値が付与されます。
test-3e1de2bb6a447def67a92dedb2319d09211ea20b88b84dda2cef238180c69abc.png
このファイルを画面で表示するときにはimage_tag を使います。
image_tag は<img>タグに画像URLを入れて表示してくれます。
このときに-3e1de2... というハッシュ値を気にする必要はありません。
image_tag("test.png")
# => <img src="http://example.com/assets/test.png">
そして今回の記事で紹介したimage_path は画像のパスだけを表示します。
もちろんハッシュ値を気にする必要はありません。
image_path("test.png")
# => "/assets/test.png"
おわりに
Railsでは直接assets からのパスを書いても反映されません。
必ずActionView::Helpers::AssetUrlHelperを使うようにしましょう。という自分への戒めも含めて記事に残しておきます。









