可以通过调试器访问局部变量,但是ERB抱怨没有定义这样的变量

时间:2012-11-27 00:21:56

标签: ruby-on-rails-3 erb

我正在做以下事情:

<%= render :partial => "folder/content", :locals => {:var1 => featured_content, :featured => true} %>

在_content.html.erb partial中,我可以访问第一个局部变量。 var1效果很好。但是,第二个局部变量存在问题。

我在想要使用特色变量的行之前调用调试器。我可以很好地访问该变量(及其值)。事实上,在调试器中,我可以列出所有局部变量......我看到“特色”就是其中之一。

但是当我运行我的服务器时,我收到以下错误:

undefined local variable or method `featured' for #<#<Class:0x002g9ff8617940>:0x007f9aa251eb38>

这里可能发生什么?对我来说根本没有意义!

更新

如果我执行以下操作:

<% if local_assigns.has_key? :featured %>
  <% 'hello world' if featured %>
<% end %>

然后一切都很好。但是,如果feature不在if语句的范围内,那么我会收到错误。

就我所见,这是彻头彻尾的疯狂 - 我希望能够深入了解正在发生的事情,以及为什么它只发生在这个糟糕的变量上(另一个变量对你来说完全没问题......)。

2 个答案:

答案 0 :(得分:0)

你可以试试这个:

<%= render "folder/content", :var1 => featured_content, :featured => true %>

请查看此信息以获取更多信息:

Rails: confused about syntax for passing locals to partials

答案 1 :(得分:0)

看起来has_key是唯一可行的选项(请参阅我的编辑)。我打算关闭这个,因为我没有得到任何更好的回应。