HABTM协会的表格创建

时间:2011-06-29 15:14:50

标签: ruby-on-rails has-and-belongs-to-many

这就是我想要完成的事情。我有学生注册的课程。我想跟踪那个班级的高级学生。我设置了另一个名为course_results的模型。

class CourseAdvanceType < ActiveRecord::Base
  belongs_to :course
  has_and_belongs_to_many :students
end

####### 
class Students < ActiveRecord::Base
  has_many :courses
  has_and_belongs_to_many :course_advance_types
end

#######
class Courses < ActiveRecord::Base
  has_one :course_advance_type
  has_many :students
end

理想情况下,我想要一个小型表格,允许选择提前类型(学术,运动),这将允许我添加下面的学生。每个学生都将被记录在为HABTM协会创建的course_advance_types_students表中。

这样的事情:

<form>
  <select>
    <option>academic</option>
    <option>athletic</option>
  </select>
  <div id="students">
     <div>Student ID: <input type="text" /></div>
     <div>Student ID: <input type="text" /></div>
     <!-- This link would dynamically add another name field -->
     <div><a href="[code]">Add Student</a></div>
  </div>
  <input type="submit>
</form>

实现这一目标的最佳方法是什么?我想过使用accepts_nested_attributes_for,但我不知道这是否有效,因为我不想为学生设置属性,我希望学生ID与course_advance_types_students表中的course_advance_type_id一起保存,以便我可以提取通过提前类型列表和学生列表推进学生的课程。

如果我需要澄清某些内容或重新考虑我的方法,请告诉我。

谢谢。

1 个答案:

答案 0 :(得分:1)

查看formtastic:https://github.com/justinfrench/formtastic

将表单放在一起以更好地处理has_many / habtm关系。