我想使用ActiveScaffold在一个步骤中为多个学生创建作业记录。记录将包含相同的数据,但student_id除外。
我能够覆盖默认表单并替换下拉框以选择具有多选框的学生姓名 - 这就是我想要的。然而,这种变化只是装饰性的,因为底层代码只从该框中抓取第一个选定的名称,并创建一个记录。
有人可以建议一种很好的方法来实现这一点,不需要我的解密和重写过多的底层ActiveScaffold代码吗?
更新:我还没有找到解决这个问题的好方法。
答案 0 :(得分:1)
我想您已经定义了多选框添加:multiple =>对select_tag的html参数为true。然后,在控制器中,您需要访问所选名称列表,您可以这样做:
params[:students].collect{|student| insert_student(student, params[:assignment_id]) }
将collect应用于数组或枚举,您可以循环遍历该数组的每个项目,然后为每个学生执行所需的操作(在示例中,调用函数以插入学生)。 Collect返回一个数组,其中包含执行代码的结果。
答案 1 :(得分:0)
如果您的分配有has_many :students
或has_and_belongs_to_many :students
,那么您可以将多选框的ID更改为assignment_student_ids [],它应该有效。
答案 2 :(得分:0)
我被称为BatchCreate,这是一个ActiveScaffold扩展,看起来它可能会成功。