渲染@object和locals vs render:partial

Ste*_*erD 8 renderpartial partials ruby-on-rails-3

我想传递一个包含原点的局部变量来到特定页面,这个变量只包含一个带有值的符号.

当我使用这个代码时它工作得很完美,原始变量可以在partial中访问:

render :partial => "products", :collection => @products, :locals => {:origin => :gallery}
Run Code Online (Sandbox Code Playgroud)

但是,当我使用此代码时,原点未设置且无法在部分中访问:

render @products, :locals => {:origin => :gallery}
Run Code Online (Sandbox Code Playgroud)

这有什么区别?第二行代码是不是像第一行一样呈现部分?

Ber*_*eit 8

<%= render @products %>
Run Code Online (Sandbox Code Playgroud)

确实是渲染部分的简写语法.但是使用简写语法,Rails将忽略":locals"变量.Rails指南中有更多内容.

因此,如果要将额外选项传递给渲染,则必须指定":partial => ...".如果您想知道为什么会发生这种情况,您可以查看Rails 源代码.