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