当将 Rails 局部局部变量作为自己的局部变量发送到另一个局部变量时,Rails 局部局部变量不会持续存在

StackOverflow https://stackoverflow.com/questions/1240321

我像这样渲染部分:

<%= render :partial => 'widgets/some_partial, :locals => {:foo => 'bar'} %>

所以里面 _some_partial.html.erb 我再渲染两个部分,如下所示:

<% #foo.nil? #=> false %>
<%= render :partial => 'widgets/another_partial', :locals => {:foo => foo} %>
`<%= render :partial => 'widgets/another_partial_again', :locals => {:foo => foo} %>`

foo 局部变量在以下位置呈现良好 some_partial.html.erb 甚至在 another_partial_again.html.erb. 。但是, foo 变量在 another_partial.html.erb 即使我在渲染调用中明确传递了它。

这里发生了什么?

谢谢您的帮助。

有帮助吗?

解决方案 2

解决。原来我也呈现从控制器相同的部分,而不发送适当的局部变量。感谢反正!!!

其他提示

我有undefined local variable or method误差上来对我来说,当我渲染的部分具有限定:locals

不过,我有造成我的问题不同的问题,所以我想我会分享我的解决方案的情况下,它可以帮助别人。 (这页的第一结果,当我GOOGLE毕竟这误差)

基本上只是确保你在呼叫:partial => 'path/to/partial'使用render

<%= render :partial => 'widgets/some_partial', :locals => {:foo => 'bar'} %>

不喜欢我正在做:

<%= render 'widgets/some_partial', :locals => {:foo => 'bar'} %>

易为Rails / Ruby的新手和我一样错过了。

遇到这个非常古老的问题,因为我遇到了同样的问题。事实证明,在 Rails 4+ 中,如果您不使用集合或布局,正确的方法是:

# Instead of <%= render partial: "account", locals: { account: @buyer } %>
<%= render "account", account: @buyer %>

据记录 这里.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top