画像への直リンクを貼る方法【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】Paranoiaを使用した論理削除(ソフトデリート)
# はじめに Paranoiaは、Railsアプリケーションで論理削除(ソフトデリート)を実現するためのGemです。 論理削除は、データベースのレコードを物理的に削除するのではなく、削除フラグを設定することで「削除済み」とみなす方法です。こ [...]
2024年7月20日 21:33
【Rails】activerecord-multi-tenantを使用したマルチテナントアプリケーションの作成
# はじめに マルチテナントアプリケーションでは、複数の顧客(テナント)が同じアプリケーションを利用するため、データの分離が必要です。 activerecord-multi-tenantは、このようなマルチテナント環境をサポートするための便 [...]
2024年7月18日 16:50
【Rails】RubyとRailsにおけるattr_reader, attr_writer, attr_accessorの概念と使用方法
# はじめに RubyとRailsの開発において、`attr_reader`,`attr_writer`,`attr_accessor`は非常に便利なメソッドです。これらは、クラス内でインスタンス変数に対するゲッターおよびセッターメソッドを簡単に [...]
2024年7月17日 18:11
【Rails】RubyとRailsにおけるyieldの概念と使用方法
# はじめに RubyとRailsにおける`yield`は、メソッドやテンプレートの中で動的にコードブロックを実行する能力を提供し、これによってコードの再利用性と拡張性が大幅に向上します。本記事では、RubyとRailsにおける`yield`の概 [...]
2024年7月17日 13:15
【Rails】AASMを使用してオブジェクトの状態遷移を効率的に管理
# はじめに Railsアプリケーションにおいて、オブジェクトの状態管理は重要な課題の一つです。AASM (Acts As State Machine) gemは、複雑な状態遷移を効率的に管理します。本記事では、AASMの基本的な使い方を解説して [...]
2024年7月16日 18:00
【Rails】RSpec + Swagger + rswagでアプリケーションのAPIをテストおよびドキュメント化する方法
# はじめに Railsアプリケーションの開発において、APIのテストとドキュメント化は重要な要素です。 RSpecはテストフレームワークとして広く利用されており、SwaggerはAPIの設計とドキュメント化を支援します。これらを統合するr [...]
2024年7月16日 14:27
【Rails】mailcatcherを使用して開発環境でメール送信をテストする方法
# はじめに mailcatcherは、開発環境でのメール送信をキャプチャするためのツールです。ローカルで送信されたメールをブラウザ上で簡単に確認できるようにします。mailcatcherをRailsアプリケーションで使用する方法について説明しま [...]
2024年7月15日 16:37
【Rails】impressionistを使用してページビューやクリック数を追跡する方法
# はじめに impressionist Gemを使用してRailsアプリケーションでページビューやクリック数を追跡する方法について説明します。 # 実装方法 ## impressionist Gemのインストール まず、impre [...]
2024年7月15日 14:18