画像への直リンクを貼る方法【Rails】

2019年10月10日 21:35
    小ネタですが備忘を兼ねて。

    画像への直リンクを貼る方法

    <%= link_to asset_url(画像のパス) do %>
      <%= image_tag 画像のパス %>
    <% end %>
    まずは結論から。以下、補足情報。

    アセットパイプライン

    そもそもRailsで普通に画像を貼る場合でも、通常はimage_tagというヘルパーメソッドを使用します。
    これは何故かというと、app/assets/配下のJavaScript、CSS、そして画像はアセットパイプラインという仕組みでコンパイルされているからで、画像の場合は以下のようなファイル名に変更されます。
    main.png
     ↓
    main-35f2b73749c6caa946cd67b9eb73bc199f56f9c03aaee1d25360af09eccf5942.png
    image_tagヘルパーメソッドはアセットパイプラインの仕組みで変更された画像のファイル名に変換してimgタグを生成してくれます。
    image_tagを使用せずにimgタグでコンパイル前のファイル名を指定すると、ファイル名が見つからないため「✗」が表示されてしまいます。

    asset_urlヘルパーメソッド

    画像を貼る場合と同様、link_toヘルパーメソッド、あるいはaタグを使用してコンパイル前のファイル名を指定しても、ファイルが見つからない旨のエラーページが表示されてしまいます。
    そんなときに用意されているのがasset_urlヘルパーメソッドです。
    asset_urlヘルパーメソッドは指定した画像のコンパイル後のファイル名を返してくれます。

    おまけ

    普通はこんなことしないと思いますが…
    <img src="<%= asset_url(画像のパス) %>" />
    <a href="<%= asset_url(画像のパス) %>">Link</a>
    たぶん、こんな書き方もできます(試してませんが)。

    関連記事

    関連記事はありません。