Rails 3插件nested_form与JavaScript在嵌套表单中动态添加表单字段的比较

Rails 3 plugin nested_form versus JavaScript appraoch for adding form fields dynamically in a nested form

本文关键字:表单 动态 添加 字段 比较 嵌套 nested 插件 form JavaScript Rails      更新时间:2023-09-26

我正在研究如何为嵌套模型动态添加表单字段,并偶然发现了ryab的nested_form插件。毫无疑问,这是一段很棒的代码,但我想知道为什么它必须如此复杂?

示例:用于创建/添加项目的表单分配了一个或多个任务。用户可以通过单击添加任务按钮来动态添加更多任务。一个项目必须至少有一个任务。每个任务都有一个名称和描述。

那么为什么不:-生成html时,使用给定ID(如"dynamic_fields")的div遍历每组任务字段-当用户单击添加任务按钮时,通过link_to_function调用JavaScript函数来克隆dynamic_fields子树。在任务列表的底部插入一组新字段。-通过JavaScript,删除新添加字段的值,并将子ID替换为唯一的值(Ryan建议使用基于当前时间的值)

我知道nested_foorms插件也适用于更深层次的嵌套结构,但鉴于我的简单用例只有一个层次,上面概述的方法实用吗?还是我错过了什么重要的东西?欢迎提供有关此主题的任何指导。

基本上,插件的工作原理与您描述的一样,但使用了表单分部作为基础。嵌套对象的id必须是唯一的,并且很容易坚持到当前的毫秒时间。

处理这个问题的方法是可行的,但需要一些额外的html来捕获表单中所需的部分,并匹配属于哪个附加对象的内容。

Ryan Bate的代码看起来很复杂,但事实并非如此。它引入了复杂的方法,只是为了让您的视图看起来不错。

我认为这个问题还有另一个解决方案,一颗名为茧的宝石。