gpt4 book ai didi

ruby-on-rails - rails : confused about syntax for passing locals to partials

转载 作者:行者123 更新时间:2023-12-03 04:50:57 25 4
gpt4 key购买 nike

了解 Rails 在渲染局部变量(并将局部变量传递到其中)方面的“魔力”。

为什么这有效:

<%= render "rabbits/form" %>

这项工作:

<%= render "rabbits/form", :parent => @warren, :flash => flash %>

但这不起作用:

<%= render "rabbits/form", :locals => { :parent => @warren, :flash => flash } %>

但这确实:

<%= render :partial =>"rabbits/form", :locals => { :parent => @warren, :flash => flash } %>

另外,我怎样才能查找这些细微差别,这样我就不需要打扰 S.O. 上的人了?

最佳答案

简短的答案是渲染方法查看您传入的第一个参数。如果您传入一个哈希(其中包括 :partial => 'foo', :locals => {blah blah blah}) 然后它将以散列形式传入所有参数并相应地解析它们。

如果您传入一个字符串作为第一个参数,它会假定第一个参数是您的部分名称,并将其余部分作为您的本地名称传递。然而,在随后的调用中,它实际上分配了 :locals => your_locals_argument,在本例中是整个 :locals => {locals hash},而不仅仅是 {本地哈希};也就是说,您最终会得到 :locals => {:locals => {locals hash}},而不是 :locals => {locals hash}

所以我的建议是始终以相同的方式显式传递值,这样就不会有问题。为了了解这一点,我直接查看代码本身(Rails 2 中的 actionpack/lib/base.rbrender() 方法;Rails 3 有所不同) 。这是一个很好的练习。

此外,不用担心“打扰”SO 上的人。这就是这个网站存在的原因。我什至从中学到了一些东西。

关于ruby-on-rails - rails : confused about syntax for passing locals to partials,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4402556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com