LoginSignup
1
1

More than 3 years have passed since last update.

Railsのlink_toの引数にオブジェクトを指定してなぜリンクが生成されるのか

Posted at

link_toの遷移先にオブジェクトを指定してリンクができる仕組みが分からない

Railsチュートリアルに以下のコードがある

index.html.erb
  <% @users.each do |user| %>
    <li>
      <%= gravatar_for user, size: 50 %>
      <%= link_to user.name, user %>
    </li>
  <% end %>

この、<%= link_to user.name, user %>はブラウザ上で何が生成されたかを見ると

<a href="/users/1">Example User</a>

のような形式となる。Example Userはuserのオブジェクトのname要素をそのままリンクの文字として渡しているので分かるとして
第二引数のuserがどうして画面上都合よく/users/1と解釈されるのか

link_toのリンク先の生成はurl_forに依存する

API仕様によると、link_toでオブジェクトを指定した場合
オブジェクトはurl_forで解釈される
そのため、<%= link_to user.name, user %>のuserはurl_for(user)となる。
それにより、users/1へと変換される

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1