1

我正在执行以下操作:

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

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

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

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

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

这里可能发生什么?这对我来说毫无意义!

更新:

如果我执行以下操作:

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

然后一切正常。但是,如果特色不在 if 语句的范围内,则会出现错误。

据我所知,这完全是疯狂的——我很想了解正在发生的事情以及为什么它只发生在这个可怜的变量上(另一个变量完全没问题,请注意……)。

4

2 回答 2

0

看起来 has_key 是目前唯一有效的选项(请参阅我的编辑)。我将关闭它,因为我没有得到任何更好的回应。

于 2012-12-05T18:54:39.927 回答
0

你可以试试这个:

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

查看此以获取更多信息:

Rails:对将局部变量传递给局部变量的语法感到困惑

于 2012-11-27T05:14:36.880 回答