我是一个坏孩子,并在我的部分模板中使用以下语法来设置局部变量的默认值,如果在渲染部分时未在:locals哈希中显式定义值 -
<% foo = default_value unless (defined? foo) %>
Run Code Online (Sandbox Code Playgroud)
直到最近,这似乎工作正常(当时我无法辨别)未通过的变量开始表现得好像它们被定义为nil(而不是未定义).
正如SO上各种乐于助人的人所指出的,http://api.rubyonrails.org/classes/ActionView/Base.html表示不使用
defined? foo
Run Code Online (Sandbox Code Playgroud)
而是使用
local_assigns.has_key? :foo
Run Code Online (Sandbox Code Playgroud)
我正在尝试修改我的方法,但这意味着要更改很多模板.
可以/我应该提前充电并在所有模板中进行此更改吗?我需要注意什么诡计?我需要多努力地测试每一个?