我一直在我的局部模板中使用以下语法来设置局部变量的默认值,如果一个值没有显式地定义在 :locals hash 中,当渲染 partial -- 时
<% foo = default_value unless (defined? foo) %>
这似乎工作得很好,直到最近(不知道为什么我能看出),未传递的变量开始表现得好像它们被定义为nil(而不是未定义)。
正如 StackOverflow 上各种好心人指出的那样,http://api.rubyonrails.org/classes/ActionView/Base.html表示不要使用
defined? foo
而是使用
local_assigns.has_key? :foo
我正试图改变我的方式,但这意味着要改变很多模板。
我可以/应该直接在所有模板中进行这种更改吗?有什么诡计需要我注意吗?我需要多努力地测试每一个模板?