所以我有一个表格和相应的课程。我收到了一个错误:
undefined method `start' for #<Klass id: nil, name: nil, teacher: nil, day: nil>
代码行:<%= f.text_field :start, class: 'form-control' %>
(当我试图删除上面的那个时)<%= f.text_field :duration, class: 'form-control' %>
删除这两个字段使我的网站正常。
我的整个表单代码:
<%= form_for @klass do | f | %>
<div class = “form-group”>
<div class="form-group">
<%= f.label :name %>
<%= f.text_field :name, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :teacher %>
<%= f.text_field :teacher, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :start %>
<%= f.text_field :start, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :duration %>
<%= f.text_field :duration, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :day %>
<%= f.select :day, ['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN'] %>
</div>
<%= f.submit 'Submit', class: 'btn btn-default' %>
</div>
<% end %>
模型(将整数更改为字符串并没有任何区别,但这是这两个字段与我可以看到的其余表单之间的唯一区别):
class Klass < ActiveRecord::Base
validates :name, presence: true
validates :teacher, presence: true
validates :day, presence: true
validates :start, presence: true
validates :duration, presence: true, numericality: { only_integer: true }
end
数据库文件:
class CreateKlasses < ActiveRecord::Migration[5.0]
def change
create_table :klasses do |t|
t.string :name
t.string :teacher
t.string :day
t.integer :start
t.integer :duration
end
end
end
和控制器:
class KlassesController < ApplicationController
def new
@klass = Klass.new
end
end
找我,就像我错过申报这两个表格字段,但我还能找到其他地方吗?
答案 0 :(得分:1)
1- rake db:rollback
确保在迁移文件中添加了这些字段
class CreateKlasses < ActiveRecord::Migration[5.0]
def change
create_table :klasses do |t|
t.string :name
t.string :teacher
t.string :day
t.integer :start
t.integer :duration
end
end
end
2- rake db:migrate
现在重新加载rails console
重载!
或者只是关闭rails控制台并再次打开rails控制台。
再次检查Klass.new
是否包含您在迁移中添加的所有字段。如果那些字段存在,那么重新启动服务器就可以了。