Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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に依存する

https://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away