我一直是个坏子元素,在呈现部分模板时,如果没有在:locals散列中明确定义值,我会在部分模板中使用以下语法为局部变量设置默认值--
<% foo = default_value unless (defined? foo) %>
直到最近(我看不出有什么原因)未传递的变量开始表现得好像它们被定义为nil(而不是未定义的)一样,这种方法似乎还不错.
正如许多有帮助的人所指出的那样,http://api.rubyonrails.org/classes/ActionView/Base.html表示not使用
defined? foo
而是使用
local_assigns.has_key? :foo
我试图改变我的方式,但这意味着改变了很多模板.
我可以/应该提前在所有模板中进行更改吗?有什么诡计需要我注意吗?我需要多努力来测试每一个?