Posted at

「redirect_to @x」や「link_to "▲▲", @x」、「url_for @x」の「@x」ってなによ!?

More than 1 year has passed since last update.

 

 

ひと言でいえば、そのインスタンス変数に代入されたインスタンスに対応する

showアクションを実行する感じ。

 


以下、url_forにおける@xだけを考えるが、redirect_tourl_forにおける@xも同様である。

具体的に考えてみよう。

まず、以下のようにルーティングが定められているとする。


routes.rb

resources :xs


「xs」とはコントローラー名のことで、「resources」でRESTfulなルーティングをつくる。

 

もちろん、xとは抽象的に書いただけであり、じっさいはbookとかmessageとか具体的な名称になる。

 

ここで、


◯◯.html.erb

<% @x = X.find(2) %>


id = 2のレコードを取得し、インスタンス変数にインスタンスとして代入。

そして、


◯◯.html.erb

<%= url_for @x %>


でリンク/xs/2が作成される。

このとき、ルーティング一覧より、/xs/2はxsコントローラーのshowアクションを示していることが分かる。 もちろん、このとき(/xs/2)の2とは、先ほど代入したレコードのidのこと。