accepted_nested_attributes_for建筑形式

时间:2011-02-23 12:41:02

标签: ruby-on-rails ruby-on-rails-3

我收到一个错误: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
#

1 个答案:

答案 0 :(得分:1)

由于患者属于您需要从用户构建患者的用户。

@user.patients.build(params[:patient])

Patient.new基本上用于创建患者的空白实例,您可以在新表单上进行渲染,但在发布到创建时,您需要从用户构建它。