2010-08-01 81 views
1

由於某種原因,我在rails中的一個模型返回nil,當我調用.new時。這只是控制器中的一個問題。當我在控制檯上嘗試時,它會返回一個帶有nil屬性的對象,就像我期望的那樣。我懷疑問題出在我的控制器中,但我不知道。ActiveRecord :: Base.new返回nil

這也發生在我打電話時.all。再次,我可以從命令行手動執行這些命令而不會出現問題。

這裏的控制器代碼:

http://gist.github.com/502816

編輯:看起來像我的幾個其他車型正在採取行動以同樣的方式。這個問題顯然比這個控制器/模型更深。我對Rails仍然很陌​​生,所以我不確定在哪裏尋找調試。編輯2:我的一個明智的朋友幫我弄清楚控制器的行爲甚至沒有被調用。但是,我的過濾器是,但它不是重定向。所以不知何故,找到了正確的控制器,但沒有調用適當的操作。

我的服務器日誌聲明正在處理正確的操作,但實際的函數體似乎沒有執行。

+0

你能告訴你的development.log輸出?它拋出任何錯誤? – 2010-08-01 01:53:50

+0

不幸的是,我沒有這個日誌方便,但我可以盡我所能總結。 它說它正在處理正確的控制器操作並呈現正確的模板,然後它在我的模板中給了我一個錯誤,我嘗試使用在控制器中創建的模型實例。 沒有什麼看起來特別顯着,但我會盡快發佈日誌。 – RyanG 2010-08-01 02:00:40

+0

我假設你說在某些時候你注意到了視圖中的空值?你能向我們展示你用來顯示它的視圖代碼嗎?我想知道是否只是你沒有按照你期望的方式傳遞變量的類型,或者什麼。你也可以嘗試插入一行來將@event輸出到日誌中,緊跟在@event = Event.new之後 - 這會告訴你是否正確設置變量? – jasonpgignac 2010-08-01 04:11:55

回答

1

我認爲你的問題是你所有的方法EventsController被聲明爲私有的。私人方法不能稱爲行動 - 所以你有問題。

嘗試將私有聲明和redirect_if_not_logged_in移動到文件的末尾,即在銷燬方法之後。

欲瞭解更多信息,Ruby的公共/私營/保護工作如何閱讀:http://www-users.math.umd.edu/~dcarrera/ruby/0.3/chp_04/features.html

+0

哦!你是對的。我以某種方式認爲你可以關閉訪問級別聲明,就像塊結束一樣,並且我認爲我這樣做了,但是這些都不是真的。這會很有意義。 – RyanG 2010-08-01 13:23:41