Rails:将空标记和内容添加到link_to

时间:2012-08-31 21:06:26

标签: html ruby-on-rails

我正在尝试使用link_to帮助程序生成一个链接,该链接将输出以下HTML:

<a href="some_url"><i class="some_class"></i>Link Name</a>

然而,我正在使用的代码尝试来完成此任务:

link_to(tag("i", class: options[:icon]) + title, url)

...正在输出:

<a href="some_url"><i class="some_class">Link Name</i></a>

为什么要这样做,我该如何解决?感谢。

修改
我相信我发现了这个问题。

<i>标记在HTML5中不是可自行关闭的标记。因此,i之后的文本被视为该元素的内容。

2 个答案:

答案 0 :(得分:5)

您是否尝试过使用link_to的块格式?

<%= link_to url do %>
  <%= tag("i", class: options[:icon]) %>
  Link Name
<% end %>

根据您的需要调整一下,也许您会得到您想要的东西。

答案 1 :(得分:1)

这是我在我的应用程序中使用的图标标记助手,我经常将其作为link_to的第一个参数传递,可以单独用于创建图标标记,也可以用图标标记后跟文本。

  def icon_tag(icon, *args)
    options = args.extract_options!
    text = args.first || options.delete(:text)
    if text.nil?
      content_tag :i, "", class: ["icon", "icon-#{icon}"] + options[:class].to_a
    else
      "#{icon_tag icon} #{text}".html_safe
    end
  end