在Rails 3.2.1中构造link_to

时间:2012-03-12 23:33:05

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-plugins

这里我的设计师改变了在html模板中使用锚标签的方式,所以我也需要更改我的rails模板,

如果他将标记放在已批准的html页面中,

<a href="#">About Me</a>

我正在以这种方式转换它

<%= link_to "About Me", '#' %>

现在,如果他在标题

中添加了带有span标记的<a href="#">About <span> Me</a>
 <ul>
       <li><a href="#">About <span>Me</span></a></li>
 </ul>

这是输出,基本上是span标记断行并在第二行显示

About
Me

现在我需要帮助将此标记转换为rails 3.2.1标记。

喜欢<%= link_to "About <span> Me</span>", '#' %>

我该怎么做? (我知道会产生错误信息)

3 个答案:

答案 0 :(得分:4)

您需要确保rails不会转义html标记。您可以使用html_safe或raw:

执行此操作
<%= link_to "About <span> Me</span>".html_safe, '#' %>

<%= link_to raw("About <span> Me</span>"), "#" %>

答案 1 :(得分:1)

如果在跨度中包装整个链接是正常的,请创建一个执行以下操作的帮助程序:

  def spanned_link_to(name,path=nil,options=nil)
    content_tag :span do
      link_to name, path, options
    end
  end

使用如下:

<%= spanned_link_to "About Me","#" %>

如果没有,

<%= link_to raw("About <span>Me</span>"),"#" %>

答案 2 :(得分:0)

我希望link_to屈服于一个块。我不完全确定ERB中的样子(我使用HAML)。你可以写一个这样的链接,但是:

link_to '#' do
  content_tag(:span, "About me")
end

或者我认为你可以像这样做一个班轮:

link_to '#' { content_tag(:span, "About me") }