-1
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
4

3 回答 3

1

添加accepts_nested_attributes_for :studentsSchool 模型并添加:students_attributes到 attr_accesible

于 2013-06-15T19:39:54.493 回答
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,如果您仍然遇到问题。

于 2013-06-15T19:43:56.547 回答
0

添加:students到您的attr_accessible. 并购买有关 Rails 的书籍。

于 2013-06-15T19:35:25.353 回答