2011-03-31 67 views
0

當用戶嘗試訪問其個人檔案頁面時,我的應用程序似乎會隨機拋出"undefined method 'address_line_1' for nil:NilClass"錯誤。未定義的方法爲零:NilClass

奇怪的是,這個錯誤發生在一個完全不相關的佈局視圖中,我看不出任何佈局甚至被稱爲(因爲它與編輯視圖無關)。

GET peoplecontacter.heroku.com/pages/5/edit dyno=web.1 queue=0 wait=0ms service=20ms bytes=934 
2011-03-31T15:19:47-07:00 app[web.1]: 
2011-03-31T15:19:47-07:00 app[web.1]: ActionView::Template::Error (undefined method `address_line_1' for nil:NilClass): 
2011-03-31T15:19:47-07:00 app[web.1]:  44:  #{@page_content.address_line_1} 
2011-03-31T15:19:47-07:00 app[web.1]: app/views/layouts/pages/page_splitheader.html.haml:44:in `_app_views_layouts_pages_page__splitheaderhtml_haml___1138718096_23705833586020_0' 

錯誤有時候會拋出我是否點擊進入該帳戶從前面customer_account視圖,或者如果剛剛點擊了頁面的顯示視圖,並點擊瀏覽器的後退按鈕,返回到編輯視圖。但是我沒有在節目中看到錯誤,這是@page_content.address_line_1應該執行的唯一地方。

在此先感謝您的幫助! --Mark

+1

我們必須看到一些代碼。可以肯定的是,有些情況下你會得到意想不到的錯誤,可能是由於錯誤處理不足。你能否添加相關的代碼片段? – Spyros 2011-03-31 23:08:33

+0

當然,但我甚至不知道你需要看什麼。 – Mark 2011-03-31 23:11:05

+0

這是在我的網頁控制器我的編輯操作: 高清編輯 @page = Page.find(PARAMS [:編號]) @page_contents = PageContent.list_by_language(@ page.id) 結束 – Mark 2011-03-31 23:13:30

回答

0

好吧,完全隨機的,我仍然不知道原因的問題是,但修正是明確設置編輯操作的佈局,以便它使用默認佈局,而不是使用我爲show action指定的佈局。我不知道爲什麼當來自另一個控制器或從顯示頁面返回到編輯頁面時,它試圖使用我用於顯示頁面的動態佈局。在我的頁面控制器的頂部,我有這個:before_filter:load_page,:only =>:show def load_page @page = Page.get_page(params)self.class.layout(@ page.template)end I認爲這是爲動作分配動態佈局的正確方法,但由於它沒有使用(我會考慮)一個hacky解決方案,也許它不是...

0

如果find_all沒有返回任何頁面,它將返回一個零值。看來你並沒有檢查。因此,當返回一個零時,你會得到一個無方法錯誤。

你必須在你的程序中處理這種情況,並向用戶提出錯誤或做一些處理,如果發生這種情況。

+0

上面的兩個查找都是查找並返回頁面。他們都在本地工作,當我通過Heroku的控制檯運行時,他們工作,因爲頁面存在。 – Mark 2011-03-31 23:26:25

+0

當Heroku發生實際錯誤時他們是否返回頁面? – Spyros 2011-03-31 23:27:28

+0

page_splitheader.html是一個佈局文件,只能從一個位置調用 - 我的頁面控制器的顯示操作。我的應用程序中包含address_line_1的唯一位置在該佈局文件中。我可以看到,如果錯誤只發生在來自show動作(當點擊返回按鈕返回編輯時),但也會發生在我甚至沒有顯示時發生的錯誤。 – Mark 2011-03-31 23:30:52

相關問題