0

私は2つのコントローラーを持っています:students_controller.rb teacher_controller.rb

これらのコントローラーは両方とも、スキャフォールディングを使用して生成されます。サーバーを起動したとき、生徒のビュー /students/new は正常に読み込まれますが、/teachers/new でエラーが発生します。

エラー:

TeachersController#new の NoMethodError

nil:NilClass Rails.root の未定義メソッド `attribute_method_matcher': /Users/pdahal/RubyOnRails/apps/myapplication

アプリケーション トレース app/controllers/teachers_controller.rb:27:in new' app/controllers/teachers_controller.rb:27:innew'

Teachers_controller.rb:

# GET /teachers/new
# GET /teachers/new.json
  def new
    @teacher = Teacher.new
    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @teacher }
    end

students_controller.rb

  # GET /students/new
  # GET /students/new.json
  def new
    @student = Student.new

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @student }
    end
  end

new.html.erb :

<%- model_class = Teacher -%>
<div class="page-header">
  <h1><%=t '.title', :default => [:'helpers.titles.new', 'New %{model}'], :model => model_class.model_name.human.titleize %></h1>
</div>
<%= render :partial => 'form' %>

デシベル/schema.rb

ActiveRecord::Schema.define(:version => 20131113051714) do

  create_table "students", :force => true do |t|
    t.string   "name"
    t.integer  "age"
    t.string   "sex"
    t.string   "email"
    t.string   "major"
    t.datetime "created_at", :null => false
    t.datetime "updated_at", :null => false
  end

  create_table "teachers", :force => true do |t|
    t.string   "name"
    t.integer  "age"
    t.string   "email"
    t.string   "sex"
    t.string   "class"
    t.datetime "created_at", :null => false
    t.datetime "updated_at", :null => false
  end

students_controller.rb のコードはまったく同じで、問題なく動作しています。助けてください、事前に感謝します。

4

1 に答える 1

0

エラーは、予約語classonを使用したためです。

create_table "teachers", :force => true do |t|
    t.string   "name"
    t.integer  "age"
    t.string   "email"
    t.string   "sex"
    t.string   "class"
    t.datetime "created_at", :null => false
    t.datetime "updated_at", :null => false
  end

私はその足場を削除し、新しく再生成しました:

rails g teacher name age:integer email sex course 
#replaced class with course, now its working great.

ありがとう!

于 2013-11-15T22:47:24.250 に答える