Hy人......我正在学习Ruby on Rail,但我不知道这个页面上发生了什么,这是我的错误:
联系人#new中的NoMethodError 显示/home/ubuntu/workspace/simplecodecasts_saas/app/views/contacts/new.html.erb第7行引发: 未定义的方法`name'对于#
这是我的new.html.erb
<div class="row">
<div class="col-md-4 col-md-offset-4">
<div class="well">
<%= form_for @contact do |f| %>
<div class="form-group">
<%= f.label :name %>
<%= f.text_field :name, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :email %>
<%= f.email_field :email, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :comments %>
<%= f.text_area :comments, class: 'form-control' %>
</div>
<%= f.submit 'Submit', class: 'btn btn-default' %>
<% end %>
</div>
</div>
</div>
这是我的路线
Rails.application.routes.draw do
resources :contacts
get '/about' => 'pages#about'
root 'pages#home'
和我的contacts_controller.rb
class ContactsController < ApplicationController
def new
@contact = Contact.new
end
def create
end
end
出了什么问题?
完整错误屏幕 screen
答案 0 :(得分:1)
根据您的错误图片,联系人中没有#< contacts id: nil>
字段,请重新运行迁移或添加这些字段。
{{1}}
表示联系人只有id,所以我猜你做的是在运行这个不会调用数据库的迁移后添加这些字段!
请为这些字段重新创建迁移并将其从原始文件中删除,所有这些都应该没问题。
运行后不要向迁移文件中添加内容,这可能会导致从头开始部署此应用程序时出现大问题。
答案 1 :(得分:0)
这意味着您的contact
记录没有任何name
属性,原因是您的数据库中没有该属性。
要修复它,只需运行rake db:migrate
...或者如果尚未创建迁移,则应执行以下步骤:
$ rails g migration AddAttrsToContacts
#db/migrate/add_attrs_to_contacts____.rb
class AddAttrsToContacts < ActiveRecord::Migration
def change
add_column :contacts, :name, :string
add_column :contacts, :email, :string
add_column :contacts, :comments, :text
end
end
$ rake db:migrate
这将使用适当的列填充表,并应解决错误。