我试图使用现有的(不是rails-made)mysql数据库来设置一个简单的CRUD。我使用scaffold来设置必要的文件,并编辑'_form'文件以匹配我的表。
但是当我在浏览器中打开网站并单击“新建”时,请填写表单,单击“sibmit”,我收到错误:NoMethodError in ContactsController#create - undefined method
名称为nil:NilClass`
好像它不识别数据库,对吧?并且有一个匹配的模型因为我使用了脚手架。
有什么建议吗?
更新
我无法运行rake db:migrate
或rake db:schema:load
,因为数据库已经存在。
如果我转到控制台并输入Contact
(我正在使用的表的名称),则会显示NameError: uninitialized constant Contacts
,但如果我输入Contact.new
,则表示#<Contact idContact: nil, name: nil, address: nil, email: nil, phones: nil, investment_advisor: nil>
表示它找到表,因为那些是表的列
答案 0 :(得分:1)
当您获得blah blah blah ... nil:NilClass
时,如果您希望某个值不为零,则会引用nil
个对象。调试,然后从那里开始。
除此之外,处理现有数据库应该没问题,只要你要么恰当地命名你的模型(以匹配现有的表名,所以其余的自动ActiveRecord东西都可以工作),or specify the table names in the models在现有数据库不遵循Rails命名约定的情况。