2012-01-06 34 views
0

我試圖使用現有的(不是rails製作的)mysql數據庫來設置一個簡單的CRUD。我用腳手架設置了必要的文件,並編輯了'_form'文件以匹配我的表格。Rails無法識別現有的數據庫

但是,當我在瀏覽器中打開該網站,點擊「新建」,填寫表格,單擊sibmit,我得到一個錯誤:NoMethodError in ContactsController#create - undefined method名」的零:NilClass`

彷彿它不承認數據庫,對嗎?並且有一個匹配模型,因爲我使用腳手架。

有什麼建議嗎?


UPDATE


我不能運行rake db:migraterake db:schema:load因爲數據庫已經存在。

如果我去控制檯,輸入Contact(表IM與工作的名稱),它說NameError: uninitialized constant Contacts但如果我鍵入Contact.new它說#<Contact idContact: nil, name: nil, address: nil, email: nil, phones: nil, investment_advisor: nil>這意味着它找到表,因爲這些都是表的列

+0

我假設你運行rake db:migrate?你可以運行rake db:schema:load?當您打開導軌控制檯並輸入Contact.new時會發生什麼? – 2012-01-06 14:32:43

+2

在這裏發佈你的#create方法是明智的,但從它的外觀來看,你並不是以某種方式實例化一個Contact。 – muffinista 2012-01-06 14:32:57

+0

您能否從控制器和表單代碼顯示更新/創建操作?和模型或數據庫表結構將很高興看到找到原因 – alony 2012-01-06 14:33:20

回答

1

每當你當你期望值不爲零時,你正在引用一個nil對象blah blah blah ... nil:NilClass。調試,然後從那裏開始。

除此之外,處理現有的數據庫應該沒問題,只要您適當地命名模型(以匹配現有表名,所以其餘的自動ActiveRecord的東西將工作),or specify the table names in the models現有的數據庫不遵循Rails命名約定。

+0

嗯..有沒有任何命令我必須做的,讓鐵路項目承認所有的表? – 2012-01-06 14:33:25

+0

您必須在模型本身中指定表名(請參閱鏈接)。我的猜測是你現有的數據庫不遵循Rails命名約定,所以你只需要幫Rails一點點,並說:「這個[插入你的模型名]連接到表'xyz'」 – jefflunt 2012-01-06 14:36:57

+0

林肯定我很確定模型正確,但我如何找到正確的命名約定?表名的第一個字母是大寫,這是一個問題嗎? – 2012-01-06 14:39:48

相關問題