如何使用ROR中的ActiveScaffold一次创建多个记录

时间:2008-09-12 21:38:03

标签: ruby-on-rails ruby ajax activerecord activescaffold

我想使用ActiveScaffold在一个步骤中为多个学生创建作业记录。记录将包含相同的数据,但student_id除外。

我能够覆盖默认表单并替换下拉框以选择具有多选框的学生姓名 - 这就是我想要的。然而,这种变化只是装饰性的,因为底层代码只从该框中抓取第一个选定的名称,并创建一个记录。

有人可以建议一种很好的方法来实现这一点,不需要我的解密和重写过多的底层ActiveScaffold代码吗?


更新:我还没有找到解决这个问题的好方法。

3 个答案:

答案 0 :(得分:1)

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

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

将collect应用于数组或枚举,您可以循环遍历该数组的每个项目,然后为每个学生执行所需的操作(在示例中,调用函数以插入学生)。 Collect返回一个数组,其中包含执行代码的结果。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我被称为BatchCreate,这是一个ActiveScaffold扩展,看起来它可能会成功。