Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

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: :deletedata: { confirm: ... }を組み合わせる
  • class:などのHTML属性でデザインをカスタマイズできる
  • クエリパラメータやアンカーも簡単に付けられる
  • ブロック構文を使えば画像などもリンク化できる

この記事がお役に立てば幸いです。最後までお読みいただきありがとうございました🙂

  1. 【完全ガイド】Excel VBAでテーブルを参照する方法20選

    大量のデータを扱うExcelブックでは、セル範囲全体を指定するよりも、テーブルを名前で参照する方がはるかに便利です。そして、あらゆる操作を高速・確実・効率的に実行するには、VBA(Visual Basic for Applications)の活用が最適な手段となります。本記事では、「Excel VBAでテーブルを参照する方法」について、実践的な20のサンプルコードを使いながら徹底的に解説します。基本から応用まで順を追って学び、ぜひ日々の業務に役立ててください。 ListObjectプロパティでテーブルを参照する基礎知識 VBAのコード内でExcelのテーブルを参照する際に使われるのがList

  2. Excelのデータベース関数とは?12種類の使い方を実例付きでわかりやすく解説

    この記事では、Excelのデータベース関数の使い方を詳しく解説します。Excelには12種類のデータベース関数が用意されており、それぞれの適用方法を一つずつ紹介していきます。まずは記事全体の概要を以下の画像でご確認ください。記事を最後まで読めば、すべての関数の使い方を習得できます。 練習用ワークブックは、下のダウンロードボタンから入手できます。 Excelのデータベース関数の基礎知識 Excelのデータベース関数を使うと、特定のデータベース(リスト)に対して合計、積、平均などの基本的な計算を簡単に実行できます。データベース関数は全部で12種類あり、DSUM、DAVERAGE、DCOUNT、D