2008-09-12 78 views
4

我想用ActiveScaffold创建作业记录几个学生一步。记录将包含相同的数据,但student_id除外。如何用ROR中的ActiveScaffold一次创建多个记录

我能够覆盖默认窗体并替换下拉框来选择学生姓名与多选框 - 这正是我想要的。然而,这种改变只是表面上的,因为底层代码只抓取该框中的第一个选择的名称,并创建单个记录。

有人可以建议一种很好的方式来完成这个过程,而不需要我解密和重写太多的底层ActiveScaffold代码吗?


更新:我还没有找到这个问题的好答案。

回答

0

如果您的assingnments有has_many :studentshas_and_belongs_to_many :students,那么您可以将多选框的ID更改为assignment_student_ids [],它应该可以工作。

+0

我的作业记录是每个学生一个记录,因为有诸如“笔记”这样的字段是针对学生的。 如果我正确理解您的答案,这将允许您在表单上选择多个名称,但ajax请求将保持不变。 – Brent 2008-09-13 17:25:49

0

我被称为BatchCreate,这是一个ActiveScaffold扩展,看起来可能会有所斩获。

1

我想你已经定义了你的多选框加入:multiple => true对于select_tag的html参数。然后,在控制器,你需要访问选定的名称列表中,你可以做什么这样的:

params[:students].collect{|student| insert_student(student, params[:assignment_id]) } 

随着收集应用到阵列或枚举可以遍历数组中的每个项目,然后做每个学生需要的东西(例如,调用插入学生的函数)。 Collect会返回一个数组,其中包含执行代码的结果。

相关问题