当将 Rails 局部局部变量作为自己的局部变量发送到另一个局部变量时,Rails 局部局部变量不会持续存在
-
11-09-2019 - |
题
我像这样渲染部分:
<%= 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 %>
据记录 这里.
不隶属于 StackOverflow