Railsのlink_toメソッドの使い方を徹底解説(実例付き)
Railsのlink_toメソッドとは?
Railsアプリケーション開発において、最も頻繁に使うヘルパーメソッドのひとつがlink_toです。
しかし、実際にはどのように動作しているのでしょうか?
本記事では、link_toの基本的な使い方から、さまざまなオプションの指定方法まで、実例を交えてわかりやすく解説します。
link_toの基本的な使い方
まず、link_toは何をするメソッドなのでしょうか?
ウェブサイトが機能するのは、ページ同士がリンクで結ばれているからです。そのリンクこそが、ページからページへ移動するための手段となっています。
プレーンなHTMLでは、リンクを次のように記述します:
<a href="/ruby-book">Rubyスキルを磨く</a>
一方、Railsでは次のように書きます:
<%= link_to "Rubyスキルを磨く", "/ruby-book" %>
なぜわざわざlink_toを使うのでしょうか?
それは、Railsがルーティング(routes)の仕組みを採用しているからです。_path系のヘルパーメソッドを活用し、その戻り値をリンク先(href属性)として指定したいわけです。
link_toを使えば、ビュー内で値を補間する手間が省け、コードもすっきりと読みやすくなります。
具体的には、次のようなイメージです:
<a href="<%= ruby_book_path %>">Rubyスキルを磨く</a>
それでは、link_toで特に役立つオプション引数を詳しく見ていきましょう。
link_toの引数とオプション
link_toの第1引数はリンクに表示されるテキストです。
では第2引数は何かというと、リンク先のURLです。
URLを直接ハードコードすることも可能ですが、実際の開発ではRailsのモデルオブジェクトや_path系ヘルパーメソッドを使うのが一般的です。
規約に従っていれば、Railsが自動的に適切なパスを判断してくれます。
たとえば、次のように書けます:
<%= link_to "Rubyスキルを磨く", book_path(@book) %>
さらに簡潔に、モデルオブジェクトを直接渡すこともできます:
<%= link_to "Rubyスキルを磨く", @book %>
単数形と複数形のルートの使い分け
どちらの書き方を使えばよいか迷ったら、次のルールを覚えておきましょう。
- 特定のリソース(個々の本など)を参照する場合は単数形
- リソースのコレクション(本の一覧など)を参照する場合は複数形
具体例:
# 複数形:本の一覧ページへのリンク
<%= link_to "すべての本", books_path %>
# 単数形:特定の本の編集ページへのリンク
<%= link_to "本を編集", edit_book_path(@book) %>
また、rails routesコマンドでルート一覧を確認するのも有効です。左端の列に表示される名前(edit_bookなど)に_pathを付ければ、そのままリンク先として利用できます。
確認ダイアログ付きの削除リンクを作る
削除操作などに便利なオプションとして、次の2つがあります。
confirm:クリック時に確認ダイアログを表示するdisable_with:クリック後のリンク表示を変更する
記述例:
<%= link_to "本を削除", @book,
method: :delete,
data: { confirm: "本当に削除しますか?", disable_with: "処理中..." } %>
リンクのデフォルトのHTTPメソッドはGETリクエストです。「DELETE」アクションを実行したい場合は、method: :deleteのように明示的に指定する必要がある点に注意しましょう。
前のページへ戻るリンク
ひとつ前のページへのリンクを作りたい場合は、:backシンボルが便利です。
<%= link_to "戻る", :back %>
カスタムCSSクラスとHTML属性の指定方法
CSSを組み合わせれば、リンクの見た目を自由にカスタマイズできます。
たとえば、次のようにclass属性を指定します:
<%= link_to "もっと本を見る", books_path, class: "index-link" %>
次のようなCSSを用意しておけば:
.index-link {
color: blue;
padding: 10px;
}
リンクにスタイルが適用されます。
id属性など、その他のHTML属性が必要な場合も、リンクテキストとURLの後に続けて指定するだけでOKです。
クエリパラメータとアンカーリンクの作成
link_toでは、クエリパラメータやアンカー(#)を含むリンクも簡単に作成できます。
なぜ便利なのでしょうか?
ユーザーがリンクをクリックした後、コントローラ側でその追加データ(パラメータ)を受け取れるからです。
たとえば、次のようなURLを作りたい場合:
/search?q=all
このように書きます:
<%= link_to "ALLを検索", search_path(q: "all") %>
アンカー付きのURL:
/books#programming
の場合は、anchorオプションを使います:
<%= link_to "プログラミング関連の本", books_path(anchor: "programming") %>
URLヘルパー(_path / _url)と組み合わせることで、link_toはあらゆる場面で必要な柔軟性を提供してくれます。
画像をリンクにする方法(ブロック構文)
意外と知られていないのですが、link_toはブロックを受け取ることもできます。
これにより、より複雑なケースにも対応可能になります。
たとえば、画像をクリックできるリンクにしたい場合:
<%= link_to books_path do %>
<%= image_tag "book_collection.png" %>
<% end %>
このように書くと、ブロック内の内容(画像や任意のHTML要素)がそのままクリック可能なリンクになります。
まとめ
本記事では、Railsのlink_toメソッドについて、基本構文から各種オプション、ブロック構文まで幅広く解説しました。
最後にポイントをおさらいしておきましょう。
- 第1引数に表示テキスト、第2引数にURLやパスヘルパーを指定する
- 削除リンクには
method: :deleteとdata: { confirm: ... }を組み合わせる class:などのHTML属性でデザインをカスタマイズできる- クエリパラメータやアンカーも簡単に付けられる
- ブロック構文を使えば画像などもリンク化できる
この記事がお役に立てば幸いです。最後までお読みいただきありがとうございました🙂
-
【完全ガイド】Excel VBAでテーブルを参照する方法20選
大量のデータを扱うExcelブックでは、セル範囲全体を指定するよりも、テーブルを名前で参照する方がはるかに便利です。そして、あらゆる操作を高速・確実・効率的に実行するには、VBA(Visual Basic for Applications)の活用が最適な手段となります。本記事では、「Excel VBAでテーブルを参照する方法」について、実践的な20のサンプルコードを使いながら徹底的に解説します。基本から応用まで順を追って学び、ぜひ日々の業務に役立ててください。 ListObjectプロパティでテーブルを参照する基礎知識 VBAのコード内でExcelのテーブルを参照する際に使われるのがList
-
Excelのデータベース関数とは?12種類の使い方を実例付きでわかりやすく解説
この記事では、Excelのデータベース関数の使い方を詳しく解説します。Excelには12種類のデータベース関数が用意されており、それぞれの適用方法を一つずつ紹介していきます。まずは記事全体の概要を以下の画像でご確認ください。記事を最後まで読めば、すべての関数の使い方を習得できます。 練習用ワークブックは、下のダウンロードボタンから入手できます。 Excelのデータベース関数の基礎知識 Excelのデータベース関数を使うと、特定のデータベース(リスト)に対して合計、積、平均などの基本的な計算を簡単に実行できます。データベース関数は全部で12種類あり、DSUM、DAVERAGE、DCOUNT、D