【发布时间】:2011-08-30 07:33:51
【问题描述】:
我不知道为什么会这样。我有以下功能:
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::Template::Error (你有一个 nil 对象,但你没想到它! 您可能期望有一个 Array 的实例。 评估 nil 时发生错误。[]):
指向“除非 options[:simple]”这一行。据我所知,选项哈希为 nil - 因此该方法忽略了默认参数分配。为什么?我可以通过将方法更改为:
def as_json(options)
options ||= {}
json = {
:id => id,
# ... more unimportant code
}
unless options[:simple]
# ... more unimportant code
end
json
end
这对任何人都有意义吗!?非常感谢您的帮助。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 methods parameter-passing