我想用ActiveScaffold创建作业记录几个学生一步。记录将包含相同的数据,但student_id除外。如何用ROR中的ActiveScaffold一次创建多个记录
我能够覆盖默认窗体并替换下拉框来选择学生姓名与多选框 - 这正是我想要的。然而,这种改变只是表面上的,因为底层代码只抓取该框中的第一个选择的名称,并创建单个记录。
有人可以建议一种很好的方式来完成这个过程,而不需要我解密和重写太多的底层ActiveScaffold代码吗?
更新:我还没有找到这个问题的好答案。
我想用ActiveScaffold创建作业记录几个学生一步。记录将包含相同的数据,但student_id除外。如何用ROR中的ActiveScaffold一次创建多个记录
我能够覆盖默认窗体并替换下拉框来选择学生姓名与多选框 - 这正是我想要的。然而,这种改变只是表面上的,因为底层代码只抓取该框中的第一个选择的名称,并创建单个记录。
有人可以建议一种很好的方式来完成这个过程,而不需要我解密和重写太多的底层ActiveScaffold代码吗?
更新:我还没有找到这个问题的好答案。
如果您的assingnments有has_many :students
或has_and_belongs_to_many :students
,那么您可以将多选框的ID更改为assignment_student_ids [],它应该可以工作。
我被称为BatchCreate,这是一个ActiveScaffold扩展,看起来可能会有所斩获。
我想你已经定义了你的多选框加入:multiple => true对于select_tag的html参数。然后,在控制器,你需要访问选定的名称列表中,你可以做什么这样的:
params[:students].collect{|student| insert_student(student, params[:assignment_id]) }
随着收集应用到阵列或枚举可以遍历数组中的每个项目,然后做每个学生需要的东西(例如,调用插入学生的函数)。 Collect会返回一个数组,其中包含执行代码的结果。
我的作业记录是每个学生一个记录,因为有诸如“笔记”这样的字段是针对学生的。 如果我正确理解您的答案,这将允许您在表单上选择多个名称,但ajax请求将保持不变。 – Brent 2008-09-13 17:25:49