【问题标题】:Render @object and locals vs render :partial渲染 @object 和局部变量 vs 渲染 :partial
【发布时间】:2012-04-16 22:42:37
【问题描述】:

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

当我使用此代码时,它运行良好,原始变量可以在部分中访问:

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

但是当我使用这段代码时,原点没有设置并且在部分中无法访问:

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

这里有什么区别?第二行代码不是像第一行那样渲染局部吗?

【问题讨论】:

  • 不应该是:locals => {:origin => :gallery}吗?
  • @Nick 确实这是一个错字,在我的应用程序中我使用了 :locals => {:origin => :gallery},所以这不是问题所在。但是很好!:)

标签: ruby-on-rails-3 renderpartial partials


【解决方案1】:
<%= render @products %>

确实是渲染部分的简写语法。但是使用简写语法,Rails 将忽略 ":locals" 变量。 Rails Guides 中有更多关于此的内容。

所以如果你想给渲染传递额外的选项,你必须指定“:partial => ...”。如果您想知道为什么会发生这种情况,可以查看 Rails source。

【讨论】:

  • 您可以将局部变量传递到@products 的末尾,它对我有用。
【解决方案2】:

这里有一个很好的解释:Rails: confused about syntax for passing locals to partials

简而言之,您可以在第二个示例中省略 :locals:

render @products, :origin => :gallery

【讨论】:

  • 绝对不适合我(Rails 3.2.13)。另一个问题的链接很有帮助。但我认为你的例子是错误的,因为你试图使用集合快捷方式,不幸的是它不允许你通过本地人。你可能在想render "product", :origin =&gt; :gallery
猜你喜欢
  • 1970-01-01
  • 2017-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多