Render @object and locals vs render :partial



我想传递一个局部变量,该变量包含要出现在特定页面上的原点,该变量只包含一个带值的符号。

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

render :partial => "products", :collection => @products, :locals => {:origin => :gallery}

但当我使用这个代码时,原点没有设置,并且在部分中不可访问:

render @products, :locals => {:origin => :gallery}

这里有什么不同?第二行代码是否与第一行代码一样呈现分部代码?

<%= render @products %>

实际上是呈现分部的简写语法。但是使用简写语法,Rails将忽略":locals"变量。在Rails指南中有更多关于这方面的内容。

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

这里有一个很好的解释:Rails:对将局部变量传递给部分的语法感到困惑

简短的版本是,您可以在第二个示例中省略:locals

render @products, :origin => :gallery

最新更新