我通常不为窗体使用表,但是当有一个嵌套的窗体(使用嵌套的_Form或cocoon gem)时,是否可以将每一组窗体元素放在一个表行中?
在我看来,这很直观:表中的每一行都代表一个对象。但是默认情况下,嵌套表单和cocoon gem都不会在它们的示例中添加表,所以我想知道使用表单是否不是最好的方法?

最佳答案

对。如果要输入表格数据,则应使用表格。
我没有测试下面的例子,但我认为它应该有效。假设您正在创建一个带有一系列行项目的收据,每个行项目都有一个描述和价格。在您的视图中,请执行以下操作:

%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"}

关联插入节点:控制插入新行项目的位置。在这个示例中,我使用了表体。
关联插入方法:用于插入新行项目的jquery方法。在这个示例中,我将它附加到表体的末尾。
在\u line \u item \u 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单击“remove”链接时要删除哪个元素。

08-26 08:36