13

我通常不使用表格作为表格,但是当有嵌套表格时(使用nested_form 或 cocoon gem 时),可以将每组表格元素放在表格行中吗?

对我来说,这似乎很直观:表中的每一行都代表一个对象。但是默认情况下,nested_form 和 cocoon gem 在他们的示例中都没有添加表格,所以我想知道使用表单是否不是最好的方法?

4

1 回答 1

29

是的。如果您正在输入表格数据,那么您应该使用表格。

我尚未测试以下示例,但我认为它应该可以工作。假设您正在构建包含一堆行项目的收据,每个项目都有描述和价格。在您看来,请执行以下操作:

%table
  %thead
    %tr
      %th Description
      %th Price
  %tbody.line_items
    = f.simple_fields_for :line_items do |f|
      = render 'line_item_fields', f: f
.links
  = link_to_add_association "Add", f, :line_items, data: {"association-insertion-node" => "tbody.line_items", "association-insertion-method" => "append"}

Association-insertion-node:这控制插入新 line_item 的位置。在示例中,我使用表格主体。

Association-insertion-method:用于插入新 line_item 的 jQuery 方法。在示例中,我将其附加到表体的末尾。

在 _line_item_fields.html.haml 中:

%tr.nested-fields
  %td= f.input :description, label: false
  %td= f.input :price, label: false
  %td= link_to_remove_association "Remove"

.nested -fields类很重要,因为它告诉 cocoon 在单击“删除”链接时要删除哪个元素。

于 2015-08-06T04:33:17.550 回答