私は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:in
new'
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 のコードはまったく同じで、問題なく動作しています。助けてください、事前に感謝します。