2012-01-06 35 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

相关问题