redirect_to、link_to、url_for などの多くのヘルパー メソッドは、コントローラーとアクションを指定するハッシュの代わりに ActiveRecord オブジェクトをパラメーターとして受け取ることができます。パラメータがさまざまなドキュメントでさまざまな方法で渡されるのを見てきました。シンボルとして渡されることもあれば、インスタンス変数として渡されることもあれば、ローカル変数として渡されることもあります。
さまざまなパラメーター スタイルが展開されて URL を返す方法について混乱しています。REST 規則に従うと、コントローラーとアクションで構成される URL を作成する必要があることはわかっていますが、Rails がその URL を作成するために特定のパラメーター スタイルをいつ必要とするかはわかりません。ActiveRecord オブジェクトをシンボル、インスタンス変数、またはローカル変数として渡すユースケースを理解するのを手伝ってください。メソッド呼び出しに基づくさまざまな要件はありますか? それとも、URL の構造に根本的な違いがありますか?
ここではいくつかの例を示します。
API ドキュメントから:
link_to "Profile", @profile
redirect_to post
<%= url_for(@workshop) %>
<%= form_for :person do |f| %> (this is described as the “generic #form_for”)
Ruby on Rails ガイドから:
<%= link_to 'New book', new_book_path %>
redirect_to(@book)
form_for(@article)
Rails 3 Way から:
'link_to' "Help", help_widgets_path, :popup => 1
redirect_to post
url_for(timesheets_path)
form_for offer do |f|
注: さらに調査すると、呼び出し元のビュー テンプレートが :locals ハッシュをパラメーターとして渡す場合、form_for はローカル変数を受け入れることができるようです。キーはパーシャルで使用できるローカル変数で、値はテンプレートのインスタンス変数です。それは正しい理解ですか?