Rails 3.2标记和标记在渲染部分时被剥离

时间:2013-01-29 05:36:57

标签: jquery html ruby-on-rails html5 ruby-on-rails-3.2

我有一个嵌套的表单,我为has_many关系显示了几个字段。当我渲染包含字段的部分时,我的tr和td标签被删除。然而,div标签不是。我该怎么做才能确保标签没有被剥离?

_form.html.erb

<%= form_for @invoice do |f>
.
.
.
<table>
  <th>Qty</th>
  <th>Description</th>
  <th>Price</th>
  <th>EA/C</th>
  <th>Amount</th>

  <%= f.fields_for :invoice_line_items do |builder| %>
    <%= render 'invoice_line_item_fields', :f => builder %>
  <% end %>
</table>

<% end %>

在浏览器源代码中查看时,表标记仅包含标题,并在呈现嵌套表单部分之前关闭。部分完全剥离了所有tr和td元素。

_invoice_line_item_fields

<div>
  <tr>
    <td>
      <%= f.text_field :qty %>
    </td>
    <td>
      <%= f.text_field :description %>
    </td>
    <td>
      <%= f.text_field :price %>
    </td>
    <td>
      <%= f.text_field :ea_c %>
    </td>
    <td>
      <%= text_field_tag :amount %>
    </td>
    <td>
      <%= f.hidden_field :_destroy %>
      <%= link_to "remove", "#", :class => "remove_line_items" %>
    </td>
  </tr>
</div>

1 个答案:

答案 0 :(得分:0)

正如其他人在评论中指出的那样,你的标记是不正确的,浏览器显示的内容可能会被高度修改,因为它试图猜测你的实际含义。

表的正确结构是:

<table>
  <thead>
    <th>Header1</th>
    <th>Header1</th>
  </thead>
  <tbody>
    <tr>
      <td>You can have divs here ...</td>
      <td>You can have divs here ...</td>
    </tr>
  </tbody>
</table>

除了<td>...</td> - 标签内外,不要混入其他HTML元素,你应该没问题......