【问题标题】:Can I use a link_to to generate a link with a span inside?我可以使用 link_to 生成一个内部有跨度的链接吗?
【发布时间】:2011-06-17 19:01:50
【问题描述】:
我基本上是想得到这个结果:
<a href="#" class="button small-button green-button">
Log in
<span class="button-right"></span>
</a>
但我不知道如何使用 rails 3 中的 link_to 来做到这一点?
【问题讨论】:
标签:
ruby-on-rails
hyperlink
href
link-to
【解决方案1】:
您可以使用 link_to 的块形式:
<%= link_to "#", :class => "button small-button green-button" do %>
Log in
<span class="button-right"></span>
<% end %>
【解决方案2】:
最简单的方法是使用 html_safe 或 raw 函数
<%= link_to 'Log In<span class="button-right"></span>'.html_safe %>
或使用原始函数(推荐)
<%= link_to raw('Log In<span class="button-right"></span>') %>
简单到不行!!
除非你确定你的字符串不是 nil,否则不要使用 html_safe 方法。而是使用 raw() 方法,它不会在 nil 上引发异常。
【解决方案3】:
你的 sn-p 看起来像一个静态链接,当被 Rails 解释时它永远不会改变;我想它可以保存在您的视图中插入原始 HTML。
但是:
<%= link_to("#", :class=>"button small-button green-button") do %>
Log in
<span class="button-right"></span>
<% end %>
Reference.
【解决方案4】:
以下内容对我有用。我不知道为什么其他代码没有(不同的 ruby 版本?)。
<%= link_to content_tag(:span, 'Register'), {:action => "register"}, :class=>"button" %>
【解决方案5】:
要添加到 Jeremy 的答案 - 对于路径,如下所示:
<%= link_to edit_section_path(@section) do %>
Edit
<span class="fa fa-list pull-right"></span>
<% end %>