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へと変換される