読者です 読者をやめる 読者になる 読者になる

Rails Webook

自社のECを開発している会社で働いています。Rails情報やサービスを成長させる方法を書いていきます

Railsでaタグのリンクを作成するlink_toメソッドの使い方

Rails View

Railsでリンクを作成するlink_toメソッドのいろいろな使い方について説明します。
HTMLのclass属性を付与する、URLにパラメータ(クエリストリング)を付与する、DELETEメソッドを付与する、ダイアログを表示する方法などのよく使う使い方を説明します。

動作確認

  • Rails 4.1.0

link_toメソッドの使い方

## Viewファイル ##
<%= link_to( name = nil, options = nil, html_options = nil, &block ) %>

# name - リンクに表示される名前
#   例.  <%= link_to "リンク名"  %>

# options
#   urlを指定する。"http://localhost/about.html"などのURL形式とposts_pathなどのパス形式で指定可能。
#   data: { confirm: 'プロンプト表示文字列' }  - プロンプトを表示させることができる
#   method - HTTPメソッドを指定可能(:post, :delete, :patch, :put)
#   remote - trueを指定するとリクエストはAjaxリクエストとして送信される

# html_options - HTMLの属性を指定可能
#   例.  <%= link_to "名前", id: "aaa" %> 
#          => <a href="xxx" id="aaa">名前</a>

link_toメソッドのよく使う使用例

「一番基本」のlink_toメソッド

<%= link_to "プロフィール", profile_path(@profile)  %>
# => <a href="/profiles/1">プロフィール</a>

# 個別ページに遷移する場合、下記のように引数にpathを渡さずにModelオブジェクトを渡すだけでも良い。
<%= link_to "プロフィール", @profile  %> 

「URLにパラメータ(例: ?q="abc")」を付与したlink_toメソッド

<%= link_to  "プロフィール", profile_path(@profile, q: "list")  %>
# => <a href="/profiles/1?q=list">プロフィール</a>

「class属性とid属性」を付与したlink_toメソッド

<%= link_to 'プロフィール', @profile, class: "btn btn-large", id: "profile-btn" %>
# => <a class="btn btn-large" href="/profiles/1" id="profile-btn">プロフィール</a>

「DELETEメソッドとダイアログを表示」するlink_toメソッド

<%= link_to "削除する", profile, method: :delete, data: { confirm: "削除しますか?" } %>
# => <a data-confirm="削除しますか?" data-method="delete" href="/profiles/1" rel="nofollow">削除する</a>

「ブロック」を使ったlink_toメソッド

ブロックを使うことで、aタグ内にHTMLタグの複雑な構造を作成できます。

<%= link_to "プロフィール" do %>
  <strong><%= @profile.name %></strong>さんのプロフィール
<% end %>
# => <a href="/profiles/1"><strong>鈴木</strong>さんのプロフィール</a>

「コントローラーやアクション」を指定したlink_toメソッド(旧形式)

# profiles#showが呼ばれる。
<%= link_to "プロフィール", controller: "profiles", action: "show", id: @profile %>
# => <a href="/profiles/1">プロフィール</a>

他にも...

link_to_iflink_to_unlessといった条件分付きのlink_toメソッドもあるので条件付きで表示・非表示にしたいときは使って下さい。

link_to_if(condition, name, options = {}, html_options = {}, &block)
link_to_unless(condition, name, options = {}, html_options = {}, &block)

詳細はRails APIの公式ドキュメントを確認して下さい。
Ruby on Rails API