

Railsで開発しております。  
assets/images/名前.jpgというパスで画像が位置づけされていますが、  
HTMLのimgタグのsrcに上記パスを記載しても画像が表示されません。

ビューファイルはassetsフォルダと同じ階層にあるviewsフォルダ内にあるhomeフォルダ内に入っております。


CC BY-SA 4.0
2018-12-29T08:51:42.083
51600
2018-12-30T05:35:01.113
2018-12-29T16:00:59.883
76
31617
question
ruby-on-rails 画像
HTML imgタグの画像が表示されません


assets 内にある画像ファイルを表示するためには、`image_tag` を利用して以下のように指定してください。適切な `img`
タグが展開されます。

[code]

    <%= image_tag("test.jpg") %>
    
[/code]

assets 以下のファイル名をそのまま指定することが出来ません。これは、assets 内にあるファイルは最終的に /aseets/ベース名-
ダイジェスト値.拡張子 (e.g.
/assets/test-3e7e2ca170634b5950c05290d759711e800664f93cdd6914fc58590f8bd7619d.jpg)として参照されるためです。(ファイルの内容が変化するとダイジェストの値が変わり、別のファイル名になります。)

何かしらの理由があって画像のパスを取得したい場合には、`asset_path` を利用してください。

[code]

    asset_path("test.jpg")
    <img src="<%= asset_path("test.jpg")%>">
    
[/code]

固定されたファイル名を使用したい場合には、public 以下のディレクトリに置くことも出来ます。この場合、public/images/test.jpg
であれば、/images/test.jpg として直接参照出来ます。

**(参考) 何故ダイジェスト値をファイル名に含めるのか?**

本番環境では高速化のため /assets
の内容をキャッシュさせることが多いのですが、ファイルの内容が変化した場合にキャッシュが利用されないようにするためです。

ダイジェストを利用したくない場合には、設定で変更することも出来ます。config/initializers/assets.rb
に以下の内容を追加してください。(おすすめしませんが。)

[code]

    Rails.application.config.assets.digest = false
    
[/code]


CC BY-SA 4.0
2018-12-30T05:35:01.113
51616
2018-12-30T05:35:01.113
76
51600
answer