Rails

【Rails基礎】ヘルパーメソッドlink_toのパスに引数を渡す意味を解説【_path(引数)】

Rails

 

今回は、link_toメソッドを使用する場合、パスに引数を渡す意味とその使い方について解説したいと思います。パスで「user_path(@user)」のような書き方をよく目にしますが、あれはどういった意味を表しているのでしょうか?

ヘルパーメソッドlink_toの使い方にも関わってくるね。

ヘルパーメソッドlink_toの概要

まずはlink_toメソッドについて軽くおさらいしておきましょう。

link_toメソッドは、リンクを生成するヘルパーメソッドです。HTMLでいうaタグと同じ扱いです。

基本的な書き方としては以下のようになり、第一引数にはリンク内のテキストを記述、第二引数にはリンクの飛び先(URL)を指定します。

<%= link_to 'Googleへ飛ぶ', 'https://www.google.com/' %>

 

上記の記述を検証ツールで確認すると、aタグに変換されていることが分かります。

<a href="https://www.google.com/">Googleへ飛ぶ</a>
Image from Gyazo

 

また、link_toメソッドには属性やmethodをオプションとしてつけることができます。HTML構造と一緒に見ていきましょう。

↓ 属性をつけた場合

<%= link_to 'Googleへ飛ぶ', 'https://www.google.com/', class: 'google' %>

 

↓ HTML構造

<a class="google" href="https://www.google.com/">Googleへ飛ぶ</a>

 

↓ methodを指定した場合

<%= link_to '削除する', item_path(@item), method: :delete %>

 

この時のHTML構造は以下のようになります。

<a rel="nofollow" data-method="delete" href="/items/1">削除</a>
methodは指定しない場合は、GETになるので覚えておきましょう。

パスの記述方法

先程はlink_toメソッドの概要についておさらいしました。ではここから本題のパスの記述方法について見ていきます。具体的には、パスに引数を渡す時の意味と使い方について解説していきます。

皆さんはlink_toのパスを指定する際に、以下のような記述を見かけたことがありますよね。ここの引数部分(ここでいうcurrent_user)は、どういった意味を表しているのでしょうか。

<%= link_to "マイページへ", user_path(current_user) %>

 

答えは、idです。引数の中身にはidが入ります。

今回の場合では、今ログインしているユーザーのidが引数として割り当てられます。

user_path(current_user)
↓
user_path(7)
↓
'users/7'に変換される

 

またPrefixを使わない場合では、以下のような記述をすることもできます。

<%= link_to 'マイページへ', "/user/#{curret_user}" %>

 

このようにパスの引数にidを指定することで、指定したパラメーターを送ることができるということを覚えておきましょう。

まとめ

  • link_toメソッドは、リンクを生成するヘルパーメソッド(aタグと同じ扱い)
  • パスの引数にidを指定することで、指定したパラメーターを送ることができる

 

 

今回はlink_toメソッドでパスに引数を渡す場合の意味と使い方について解説しました。リンクを生成するヘルパーメソッド「link_to」はRails実装する上で必須の知識になるので、ぜひ使い方や記述方法をマスターしておきましょう。