我有一個相當舊的模板系統寫在ERB之上。它依賴於存儲在數據庫中的ERB模板。那些被閱讀和渲染。當我想將數據從一個模板傳遞到另一個模板時,我使用:locals參數來Rails渲染方法。爲了在一些模板中設置這些變量的默認變量,我使用了定義的?方法簡單地告訴我,如果局部變量定義;如果沒有使用默認值初始化它是這樣的:定義?方法在Ruby和Rails
unless defined?(perex)
perex = true
end
我升級應用最新的Rails,我看到一些奇怪的行爲。基本上這有時會起作用(有時perex是未定義的),有時它不會(perex被定義並設置爲零)。這發生在沒有其他變化的情況下
我有兩個問題: 除了使用定義之外,還有其他更好的方法嗎?這證明是不可靠的(在頂級Rails 1.6上可靠幾年)?這樣的方式不應該導致我重寫所有的模板。 我一直在瀏覽Ruby文檔,無法找到關於定義的任何內容?方法。它已被棄用,還是我只是盲目的?
編輯:實際問題是由似乎是Ruby/eRB錯誤引起的。有時除非聲明會起作用,但有時不會。奇怪的是,即使第二條線執行perex斯蒂爾留在世界其他地方。刪除已定義的?解決了。
這是不正確的。 perex || = true與perex = perex ||相同如果它是未定義的,則將perex設置爲true,否則爲false。最後的情況會打破一切。 – Honza 2008-10-27 08:16:14