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>
【问题讨论】:
您的表格无效。<th>
不在 <tr>
中
同时删除部分中 tr
s 周围的 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>
除了<td>...</td>
-tags 之外,不要混入其他 HTML 元素,你应该没问题...
【讨论】:
以上是关于Rails 3.2 <tr> 标签和 <td> 标签在渲染部分时被剥离的主要内容,如果未能解决你的问题,请参考以下文章