Rails:如何在link_to中添加空标签和内容

3
我将尝试使用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>

为什么会出现这种情况,我该如何解决?谢谢。
编辑: 我相信我找到了问题所在。 在HTML5中,标签不是自关闭的标签。因此,标签后面的文本被视为该元素的内容。

link_to((tag("i", class: options[:icon])+title), url),请尝试此代码 - Prem
@prem 我之前尝试过了,结果一样。我不确定为什么Rails会把文本内容放在应该为空的标签内部。 - David Link
2个回答

5

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

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

根据你的需要进行微调,也许你会得到你想要的结果。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接