class Student < ActiveRecord::Base
attr_accessible :dob, :grade_status, :school_id
belongs_to :school
end
class School < ActiveRecord::Base
attr_accessible :location, :name
has_many :students
end
class HomeController < ApplicationController
def index
@school = School.new
@student = @school.students.build(params[:student])
School.create(params[:school])
end
end
答案 0 :(得分:1)
在学校模型中添加accepts_nested_attributes_for :students
并将:students_attributes
添加到attr_accesible
答案 1 :(得分:0)
将:students
添加到您的attr_accessible
列表中。并购买关于Rails的书。
答案 2 :(得分:0)
看起来您的params
哈希包含“学校”键内的“学生”键。这准确吗?它看起来像这样:
{ school: { name: 'Foo', location: 'Bar', students: [...] } }
我会假设是这种情况。您应该使用嵌套属性,添加:
accepts_nested_attributes_for :students
到您的学校模型。同时将students_attributes
添加到学校模型中的attr_accessible
行。
在您的视图中,您需要使用fields_for
帮助程序,以便Rails可以在您的参数中构建students_attributes
密钥。它看起来像这样:
form_for @school do |f|
f.text_field :name
f.text_field :location
f.fields_for :students do |builder|
builder.text_field :dob
...
(这应该全部在ERB,Haml或你正在使用的任何地方)
以下是嵌套表单上的Railscast:http://railscasts.com/episodes/196-nested-model-form-part-1如果您仍然遇到问题。