4
我不知道为什么会发生这种情况。我有以下功能:Rails方法忽略默认参数 - 为什么?
def as_json(options = {})
json = {
:id => id,
# ... more unimportant code
}
unless options[:simple]
# ... more unimportant code
end
json
end
它工作的大部分时间,但在一个特定的部分,我称之为:
window.JSONdata = <%= @day.to_json.html_safe %>
我得到以下错误:
::的ActionView模板::错误(当你没有想到它的时候,你有一个零对象! 你可能已经预期了一个数组的实例 评估为零时发生错误[]):
指向该行“除非选项[:简单]”。据我所知,选项散列是零 - 因此该方法是忽略默认的参数分配。为什么?我可以通过更改方法来解决此问题:
def as_json(options)
options ||= {}
json = {
:id => id,
# ... more unimportant code
}
unless options[:simple]
# ... more unimportant code
end
json
end
这对任何人都有意义吗?最感谢您的帮助。
非常感谢大家的回应 - 这真的很清楚,内容翔实! – Tyler 2011-05-22 16:01:38
最后一个问题。在发布此问题之前,我尝试使用控制台调用to_json以查看问题是否与该函数相关。但是在控制台中,to_json和as_json都正常工作。任何想法为什么控制台不会产生错误? – Tyler 2011-05-22 16:11:04
它在控制台上的行为与我的预期相同。也许你没有重新加载或重新启动控制台以反映当时的代码。 – htanata 2011-05-23 07:06:56