如何在ROR中使用ActiveScaffold一次创建多个记录
时间:2020-03-05 18:52:33 来源:igfitidea点击:
我想使用ActiveScaffold在单个步骤中为几个学生创建作业记录。除student_id外,所有记录均包含相同的数据。
我能够覆盖默认表单,并使用我想要的多选框替换用于选择学生姓名的下拉框。但是,该更改只是表面上的,因为基础代码仅从该框中获取第一个选择的名称,并创建一个记录。
有人可以提出一种不需要我破译和重写太多底层ActiveScaffold代码的方式来实现这一目标的好方法吗?
更新:我仍然没有找到这个问题的好答案。
解决方案
回答
如果附件具有" has_many:students"或者" has_and_belongs_to_many:students",则可以将多选框的ID更改为Assignment_student_ids [],它应该可以工作。
回答
我被称为BatchCreate,这是一个ActiveScaffold扩展,看起来可以解决问题。
回答
我想我们已经定义了多选框,在select_tag的html参数中添加了:multiple => true。然后,在控制器中,我们需要访问所选名称的列表,我们可以执行以下操作:
params[:students].collect{|student| insert_student(student, params[:assignment_id]) }
将collect应用于数组或者枚举后,我们可以遍历该数组的每个项目,然后对每个学生进行所需的操作(在示例中,调用函数以插入学生)。 Collect返回一个数组,其中包含在其中执行代码的结果。