0

我有一个模型,Lesson,它has_many :lesson_objectives。每个都Lesson可以有无限数量的LessonObjectives- 这是问题的一部分。

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

但是我不确定两件事。

  • 将此行为添加到视图中的最佳方法。它可能需要大量的 jQuery,我不确定最佳实践。例如,如果用户删除“Objecive 5”,然后“Objective 6”将不得不重新排列以填充“Objective 5”怎么办?

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

如果宝石可能有帮助,请随时提出建议!我一直在使用 SimpleForm 和其他一些。

谢谢!

4

1 回答 1

1

您是正确的,您需要深入研究 JQuery 以在输入默认的课程目标 2 后自动创建新的课程目标输入字段。

例如,如果用户删除“Objecive 5”,然后“Objective 6”将不得不重新排列以填充“Objective 5”怎么办?

最佳实践规定不涉及 JQuery,但会涉及 PARTIAL!和 AJAX。

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

然后,如果您有一个“删除”链接 (remote=>true),并点击了删除课程目标的控制器操作,该控制器将渲染导致部分重新渲染的 javascript,这次是所有课程目标的新列表(减去您刚刚删除的那个)。

simple_form 很好,普通的旧 Rails 表单助手可以正常工作。您的意图不会影响您对表单技术的选择。

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

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

如果您的表单是 foo,并且该表单中的输入是 bar,则它的名称是 'foo[bar]'

您可以使用开箱即用的普通旧导轨做任何您想做的事情。最难的部分将是 jquery 添加具有正确名称的新输入字段,以便它们正确发布。

于 2013-04-12T01:51:22.317 回答