4

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

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

有人可以建议一种不需要我解密和重写太多底层 ActiveScaffold 代码的方式来完成此任务的好方法吗?


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

4

3 回答 3

1

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

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

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

于 2008-11-17T16:06:16.283 回答
0

我被提到BatchCreate,这是一个 ActiveScaffold 扩展,看起来它可以解决问题。

于 2008-09-15T12:52:48.003 回答
0

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

于 2008-09-13T06:40:11.100 回答