我有一个页面,其中有一张人的表格。我想使用cocoon来创建一个可以称为“快速添加”功能的内容。听起来很简单,对吧?
由于超出此问题范围的原因,我仅希望能够使用此cocoon界面添加人员。我不想编辑已存在的人,或删除它们,或类似的东西。我甚至不想要茧加载它们。 (我知道,我知道,这是一个奇怪的想法,对吗?)
这是我应该使用cocoon的东西,还是我最好只编写自己的javascript来添加/删除这些“快速添加”字段?如果值得使用cocoon,我该如何实现它以便不从数据库加载已存在的人?
提前致谢。
答案 0 :(得分:1)
Cocoon不负责加载您的关联。您需要做的就是省略cocoon docs中建议的fields_for
部分:
= form_for @project do |f|
.field
= f.label :name
%br
= f.text_field :name
.field
= f.label :description
%br
= f.text_field :description
%h3 Tasks
#tasks
-# Two lines below are responsible for displying already saved models. Just get rid of them.
=# f.fields_for :tasks do |task|
=# render 'task_fields', f: task
.links
= link_to_add_association 'add task', f, :tasks
= f.submit
最终,您可能希望页面在验证错误时保留表单中新插入的记录。在这种情况下,fields_for
接受第二个参数来指定要呈现的记录:
= f.fields_for :tasks, f.object.tasks.select(&:new_record?) do |task|
= render 'task_fields', f: task