Ruby on rails Rails:动态生成具有多个关系的表单元素

Ruby on rails Rails:动态生成具有多个关系的表单元素,ruby-on-rails,forms,associations,Ruby On Rails,Forms,Associations,我有一个模型,课程,它有很多:课程目标。每个课程可以有无限数量的LessonObjectives——这就是部分问题所在 我计划将这两个模型的控制器/视图集成在一起-这样,每当有人想要创建课程时,他们也必须为其提供所有LessonObjectives。我想要一个解决方案,在默认情况下,用户可能会看到两个字段,例如“Objective 1”和“Objective 2”,然后在用户键入时动态添加任何后续字段。当用户填写“目标n”时,将自动显示“目标n+1”字段 然而,有两件事我不确定 将此行为添加到

我有一个模型,
课程
,它有很多:课程目标。每个
课程
可以有无限数量的
LessonObjectives
——这就是部分问题所在

我计划将这两个模型的控制器/视图集成在一起-这样,每当有人想要创建
课程
时,他们也必须为其提供所有
LessonObjective
s。我想要一个解决方案,在默认情况下,用户可能会看到两个字段,例如“Objective 1”和“Objective 2”,然后在用户键入时动态添加任何后续字段。当用户填写“目标n”时,将自动显示“目标n+1”字段

然而,有两件事我不确定

  • 将此行为添加到视图中的最佳方法。它可能需要很多jQuery,我不确定最佳实践是什么。例如,如果一个用户删除了“目标5”,那么“目标6”将被重新排列以填充“目标5”,该怎么办

  • 如何配置表单字段(名称、ID),以便Rails能够理解其行为,并能够在不违反Rails惯例的情况下保存数据,并保持其RESTful和DRY

如果宝石可能有帮助,那么请随意推荐!我一直在使用SimpleForm和其他一些


谢谢

输入默认lessonObjective2后,您需要深入研究JQuery以自动创建新的LessonObjective输入字段,这是正确的

例如,如果一个用户删除了“目标5”,那么“目标6”将被重新排列以填充“目标5”,该怎么办

最佳实践要求不涉及JQuery,而是涉及一个局部查询!还有阿贾克斯

这是关键,任何创建当前所有LessonObjects显示的内容都将是局部的。该分部负责按顺序对目标进行编号

然后,如果您有一个“delete”链接(remote=>true),并点击一个删除lessonObjective的控制器操作,该控制器将呈现javascript,该javascript将导致部分重新呈现,这一次将使用所有lessonObjective的新列表(减去刚才删除的一个)

简单的表单很好,普通的旧rails表单助手也可以。关于您打算做什么的内容不会影响您对表单技术的选择

如何配置表单字段(名称、ID),以便Rails能够理解其行为,并能够在不违反Rails惯例的情况下保存数据,并保持其RESTful和DRY

只需记住rails助手如何命名输入的基本知识:

如果您的表单是foo,并且该表单中的输入是bar,那么它的名称是“foo[bar]”


你可以做任何你想做的事情,只需简单的旧铁轨开箱即用。最困难的部分将是jquery添加带有专有名称的新输入字段,以便它们能够正确发布。

感谢您的回答,我已经明白了很多。
LessonObjective][1]
LessonObjective][2]
会是部分字段的表单命名约定吗?这样rails就可以理解这种关系了?只要确保整数值是LessonObjective对象的实际id值,(1,2,3..)序列是人工的,并且是由视图创建的。