0

在我的视图文件中,我键入以下内容:

<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

4

4 回答 4

2

根据将 div 放入锚中是否正确?,您只能将内联元素放置在锚点内。<div>是块元素,因此您的代码将不起作用。您需要使用类似的东西<span>来包装您打算放入锚中的任何数据。

第一篇文章确实继续说 HTML5 允许<a>包含块,所以如果您将 HTML5 定义为您的文档类型,那么我们需要更深入地挖掘。

于 2011-03-22T12:27:18.933 回答
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 的含义。

于 2011-03-22T12:50:16.360 回答
0

你不能在标签div里面。<a>使用<span>or<p>代替

于 2011-03-22T12:29:30.873 回答
0

您不能将块元素放在内联元素中。如果你试图链接 div,你应该使用这个:

 tag(:div, {:class => "my_class", :onclick => "my_address"})

否则,使用span代替div

于 2011-03-22T12:31:05.097 回答