我对将控制器的实例变量传递给部分模板(以此实例变量命名)感到困惑。
来自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' %>
为什么这样?