Rails 3.2 <tr> 标签和 <td> 标签在渲染部分时被剥离

Posted

技术标签:

【中文标题】Rails 3.2 <tr> 标签和 <td> 标签在渲染部分时被剥离【英文标题】:Rails 3.2 <tr> tags and <td> tags being stripped when rendering partial 【发布时间】:2013-01-12 15:14:46 【问题描述】:

我有一个嵌套表单,其中显示了一些用于 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 %>

在浏览器源代码中查看时,table 标记仅包含标题,并且在呈现嵌套表单部分之前关闭。部分完全剥离所有 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>

【问题讨论】:

您的表格无效。 &lt;th&gt; 不在 &lt;tr&gt; 同时删除部分中 trs 周围的 div - 这也是无效的,很可能会导致您的问题。 你怎么知道标签被剥离了?你使用像检查员这样的东西吗?这些工具显示已解析的文档树,而不是实际的源代码。 【参考方案1】:

正如其他人在 cmets 中指出的那样,您的标记不正确,并且浏览器显示的内容可能会被高度修改,因为它试图猜测您的实际意思。

表格的正确结构是:

<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>

除了&lt;td&gt;...&lt;/td&gt;-tags 之外,不要混入其他 HTML 元素,你应该没问题...

【讨论】:

以上是关于Rails 3.2 <tr> 标签和 <td> 标签在渲染部分时被剥离的主要内容,如果未能解决你的问题,请参考以下文章

table中的th标签

Rails 3.2 - 在现有表单上添加新关联

HTML语言中TR,TH和TD有啥区别

rails html文件打印数据库中不需要的数据

rails 在两个表中划分循环。导轨视图,新手

HTML <tr> 标签的正则表达式 [重复]