我正在制作涉及为用户预约约会的申请。我有一个User模型和一个AvailableDate模型。用户has_many availble_dates和AvailableDate belongs_to用户。
我想为用户提供一个表单,以便他们可以在日历中标记几个日期,并且他们标记的每个日期都将成为与该用户关联的AvailableDate对象。
目前,我的解决方案是完成form_for帮助程序通常手动完成的所有工作。这涉及很多javascript,而且通常只是太乱了。
当我需要创建可能无限多的日期时,我无法弄清楚如何使form_for标记生效。理论上,用户可以在将来标记日期可用。如果我知道需要为用户创建多少日期,我可以使用user.available_dates.build,N次。但这在这里不起作用。
有人可以帮忙吗?这个问题应该很常见。我的应用程序设计错了吗?
答案 0 :(得分:0)
一种技巧是在表单之外为关联呈现一次字段。
当用户执行应创建新输入集的任何交互时,您可以使用javascript克隆初始字段集并将其插入表单中。您需要做的一件事是更改这些输入的名称,使它们是唯一的。通常人们使用当前时间(以毫秒为单位)来表示此唯一标识符。
答案 1 :(得分:0)
去过那里&找到了几个可以提供帮助的资源:Tutorial& Cocoon
最重要的是,您需要确保child_index对每个字段都是唯一的。我使用的教程有child_index: Time.now.to_i
来创建一个真正唯一的ID,因此您可以根据需要添加任意数量的字段
最好的方法:
- 将
fields_for
渲染为部分(传递表单构建器对象)- 如果要添加新字段,请创建
ajax_field
操作- 让
ajax_field
视图拥有自己的form_builder
- 你原来的和
ajax_field
表单会调用部分- 在前端,您可以使用JS来
GET
新的表单操作&将字段追加到页面
如果你想要我可以给你代码