我有一个Lesson
模型has_many :lesson_objectives
。每个Lesson
都可以拥有无限数量的LessonObjectives
- 这是问题的一部分。
我计划将这两个模型的控制器/视图集成在一起 - 这样每当有人想要创建Lesson
时,他们也必须为它提供所有LessonObjective
。我想要一个解决方案,默认情况下,用户可能会看到两个字段,例如“Objecive 1”和“Objective 2”,然后随着用户输入的那样随时添加任何后续字段。当用户填写“目标n”时,将自动显示“目标n + 1”字段。
但是我不确定两件事。
将此行为添加到视图中的最佳方法。它可能需要大量的jQuery,我不确定最佳实践。例如,如果用户删除“Objecive 5”然后“目标6”必须被洗牌以填充“目标5”,该怎么办?
如何配置表单字段(名称,ID),以便Rails能够理解行为并能够在不破坏rails约定的情况下保存数据并保持RESTful和DRY。
如果宝石有帮助,请随时提出建议!我一直在使用SimpleForm和其他一些。
谢谢!
答案 0 :(得分:1)
你输入默认的lessonObjective2后,你需要深入研究JQuery以自动创建新的LessonObjective输入字段。
例如,如果用户删除“Objecive 5”然后“目标6”将被拖曳以填充“目标5”该怎么办?
最佳实践规定不涉及JQuery,但会涉及PARTIAL!和AJAX。
这是关键,无论是什么创造了当前所有课程的显示,目标都是局部的。这部分将负责按顺序编号目标。
然后,如果你有一个'删除'链接(remote => true),并点击一个删除一个lessonObjective的控制器动作,该控制器将呈现导致部分重新渲染的javascript,这次是一个新的所有课程目标的列表(减去您刚删除的那个)。
simple_form很好,普通的旧轨道形式帮手可以正常工作。没有任何关于您的意图会影响您选择的表单技术。
如何配置表单字段(名称,ID),以便Rails能够理解行为并能够在不破坏rails约定的情况下保存数据并保持RESTful和DRY。
请记住rails帮助程序如何命名输入的基础知识:
如果您的表单是foo,并且该表单中的输入是bar,则其名称为'foo [bar]'
你可以用开箱即用的普通旧导轨做你想做的一切。最难的部分是jquery添加具有正确名称的新输入字段,以便它们能够正确发布。