コントローラーのインスタンス変数を部分テンプレート (このインスタンス変数にちなんで名付けられた) に渡すことについて混乱しています。
http://api.rubyonrails.org/classes/ActionView/Partials.htmlのドキュメントは次のように述べています。
デフォルトでは、PartialRenderer は、テンプレートに渡されるオブジェクトのローカル名にテンプレート名を使用します。これらの例は事実上同じです。
<%= render :partial => "contract", :locals => { :contract => @contract } %>
<%= render :partial => "contract" %>
しかし、私の場合、同じ魔法を得ることができません。
ProductsController#show :
@foo = "123456789"
次のエディションのshow.html.erbは機能します(コントローラーの@fooは、_foo.html.erbのローカル変数fooとして表示されます)。
<%= render :partial => 'foo', :locals => { :foo => @foo } %>
しかし、次のコードはコントローラーの @foo 変数を_foo.html.erbパーシャルに渡しません。
<%= render :partial => 'foo' %>
なんでそうなの?