未定义的方法形式[NEWBE]

时间:2017-12-13 22:51:44

标签: ruby-on-rails forms

所以我有一个表格和相应的课程。我收到了一个错误:

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

找我,就像我错过申报这两个表格字段,但我还能找到其他地方吗?

1 个答案:

答案 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是否包含您在迁移中添加的所有字段。如果那些字段存在,那么重新启动服务器就可以了。