防止 Cocoon 加载存储的对象

Prevent Cocoon from Loading Stored Objects

上下文:

我有一个页面,其中有 table 个人。我想使用 cocoon 在这个 table 的底部创建一个可以称为 "quick-add" 的功能。听起来很简单,对吧?

收获:

出于超出此问题范围的原因,我希望能够添加人使用此茧界面。我不想编辑已经存在的人,或删除他们,或类似的东西。我什至不希望茧加载它们。 (我知道,我知道,这是一个奇怪的想法,对吧?)

问题:

这是我应该使用 cocoon 的东西吗,或者我最好只写我自己的 javascript 到 add/remove 这些 "quick-add" 字段?如果值得使用 cocoon,我该如何实现它,以便不从数据库中加载已经存在的人?

提前致谢。

Cocoon 不负责加载您的关联。您需要做的就是省略 Cocoon 文档中建议的 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