我收到一个错误:nil的未定义方法构建:NilClass在尝试为我的表单构建一个空的子对象时。
class PatientsController < ApplicationController
def index
end
def new
@patient = Patient.new
# THIS CAUSES AN ERROR (undefined method `build' for nil:NilClass)
@patient.user.build
end
end
class Patient < ActiveRecord::Base
belongs_to :user
accepts_nested_attributes_for :user
attr_accessible :user_id, :user_attributes
end
# == Schema Information
#
# Table name: patients
#
# id :integer not null, primary key
# user_id :integer
# created_at :datetime
# updated_at :datetime
#
答案 0 :(得分:1)
由于患者属于您需要从用户构建患者的用户。
@user.patients.build(params[:patient])
Patient.new基本上用于创建患者的空白实例,您可以在新表单上进行渲染,但在发布到创建时,您需要从用户构建它。