在我的视图文件中,我输入以下内容:
<table>
<tr>
<td><%= link_to(tag(:div, {:class => "my_class"}), "my_address") %></td>
</tr>
</table>
结果是:(在Firebug中观察到)
<table>
<tbody>
<tr>
<td>
<a href="my_address"></a>
<div class="my_class"></div>
</td>
</tr>
</tbody>
</table>
为什么div
不在a
内?
答案 0 :(得分:2)
根据Is putting a div inside a anchor ever correct?,您只能将内嵌元素放在锚点内。 <div>
是一个块元素,因此您的代码将无效。您需要使用类似<span>
的内容来包装您想要放入锚点的任何数据。
第一篇文章继续说HTML5允许<a>
包含块,所以如果你将HTML5定义为你的doctype,那么我们需要深入挖掘。
答案 1 :(得分:2)
您应该使用content_tag
,而不是tag
。
<table>
<tr>
<td><%= link_to(content_tag(:div, { :class => "my_class" }), "my_address") %></td>
</tr>
</table>
老实说,在这种情况下,我更喜欢使用一个块。
<table>
<tr>
<td>
<%= link_to "my_address" do %>
<div class="my_class"></div>
<% end %>
</td>
</tr>
</table>
Rails不执行任何类型的HTML验证,因此我没有考虑到代码产生的有效/无效HTML的含义。
答案 2 :(得分:0)
div
代码中无法<a>
。请改用<span>
或<p>
答案 3 :(得分:0)
您不能将块元素放在内联元素中。如果您尝试链接div,则应使用此:
tag(:div, {:class => "my_class", :onclick => "my_address"})
否则,请使用span
代替div