2012-08-31 119 views
3

我想使用的link_to助手将输出下面的HTML生成一个链接:Rails的:添加一个空的标签加内容LINK_TO

<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之后的文本被视为该元素的内容。

+0

的link_to((标签( “我”,等级:选择[:图标])+标题),URL),试试这个 – Prem

+0

@prem我以前试过了。同样的结果。我不确定为什么Rails将文本内容放在里面*应该是一个空标签。 –

回答

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 
5

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

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

调整到您的需要,也许你会得到你要的东西。