我很想得到帮助,因为我无法找到答案。我收到一条错误消息
undefined method `name' for #<Contact id: nil>
我不知道出了什么问题。
我的查看文件如下所示
<div class="container">
联系我们
<div class="col-md-4 col-md-offset-4">
<%= flash[:notice] %>
<div class="well">
<%= form_for @contact do |f| %>
<div class="form-group">
<%= f.label :name %>
<%= f.text_field :name, class: 'form-control' %>
</div>
这不是全部,但问题线似乎是
<%= f.text_field :name, class: 'form-control' %>
即使我没有碰到那条线。
我改变的是
<%= form_for @contact do |f| %>
这
<%= form_for "/contacts" do |f| %>
我做错了什么?
编辑: 这是我的contacts_controller
class ContactsController < ApplicationController
def new
@contact = Contact.new
end
def create
@contact = Contact.new(contact_params)
if @contact.save
redirect_to new_contact_path, notice: "Message Sent."
else
redirect_to new_contact_path, notice: "Error occured"
end
end
private
def contact_params
params.require(:contact).permit(:name, :email, :comments)
end
end
编辑2:
我想通了,但我不太清楚为什么会这样。如果有人能向我解释,我会非常感激。我在我的控制台中运行了rails db:reset
,rails db:drop
和rails db:migrate
,这似乎解决了这个问题。我记得我最初打字的时候rails db:migrate
我不小心输入了rails db migrate
。这可能是问题的原因吗?
答案 0 :(得分:1)
根据您上次的修改,是rails db migrate
可能会导致此问题,因为当您运行它时,您可能没有注意到它失败了,并且没有为name
模型创建Contact
列虽然您无法访问它,并且如果您正确运行它而不破坏数据库并再次创建它将起作用,因为只有您的上次迁移没有运行,并且作为将来参考知道上次迁移运行的是什么检查schema.rb
您将在顶部看到迁移ID,这是迁移名称的第一部分(时间戳)。