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

小ネタですが備忘を兼ねて。

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

<%= 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>
たぶん、こんな書き方もできます(試してませんが)。

関連記事

【Rails】RSpecを使った自動テスト《システムスペック編》
# はじめに Railsでアプリケーションを開発する際、品質を担保するためにテストは欠かせません。その中でも、RSpecは多くの開発者に愛用されているテストフレームワークです。 今回は、RSpecを使ったRailsアプリケーションのテスト方 [...]
2024年7月11日 17:07
【Rails】RSpecを使った自動テスト《リクエストスペック編》
# はじめに Railsでアプリケーションを開発する際、品質を担保するためにテストは欠かせません。その中でも、RSpecは多くの開発者に愛用されているテストフレームワークです。 今回は、RSpecを使ったRailsアプリケーションのテスト方 [...]
2024年7月11日 16:06
【Rails】RSpecを使った自動テスト《コントローラースペック編》
# はじめに Railsでアプリケーションを開発する際、品質を担保するためにテストは欠かせません。その中でも、RSpecは多くの開発者に愛用されているテストフレームワークです。 今回は、RSpecを使ったRailsアプリケーションのテスト方 [...]
2024年7月11日 15:39
【Rails】RSpecを使った自動テスト《モデルスペック編》
# はじめに Railsでアプリケーションを開発する際、品質を担保するためにテストは欠かせません。その中でも、RSpecは多くの開発者に愛用されているテストフレームワークです。 今回は、RSpecを使ったRailsアプリケーションのテスト方 [...]
2024年7月11日 11:50
【Rails】RSpecを使った自動テスト《基本編》
# はじめに Railsでアプリケーションを開発する際、品質を担保するためにテストは欠かせません。その中でも、RSpecは多くの開発者に愛用されているテストフレームワークです。 今回は、RSpecを使ったRailsアプリケーションのテスト方 [...]
2024年7月10日 17:49
【Rails】デザインパターン「Concern」の基本情報と実装方法
# はじめに Ruby on RailsなどのMVCフレームワークで構築したWebシステムにはアンチパターンというものが存在します。システム開発におけるアンチパターンとは、避けるべき悪い設計や実装方法のことを指します。 MVCフレームワーク [...]
2024年7月10日 13:32
【Rails】デザインパターン「Form Object」の基本情報と実装方法
# はじめに Ruby on RailsなどのMVCフレームワークで構築したWebシステムにはアンチパターンというものが存在します。システム開発におけるアンチパターンとは、避けるべき悪い設計や実装方法のことを指します。 MVCフレームワーク [...]
2024年7月6日 22:50
【Rails】デザインパターン「Service Object」の基本情報と実装方法
# はじめに Ruby on RailsなどのMVCフレームワークで構築したWebシステムにはアンチパターンというものが存在します。システム開発におけるアンチパターンとは、避けるべき悪い設計や実装方法のことを指します。 MVCフレームワーク [...]
2024年7月6日 19:59