我可以使用link_to生成包含span的链接吗?

20
我基本上想要获得这个结果:
        <a href="#" class="button small-button green-button">
            Log in
            <span class="button-right"></span>
        </a>

但是我不知道如何在Rails 3中使用link_to来实现这个?

5个回答

46

你可以使用link_to的块形式来实现:

<%= link_to "#", :class => "button small-button green-button" do %>
  Log in
  <span class="button-right"></span>
<% end %>

4
最简单的方法是使用html_saferaw函数。
<%= 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
以下方法对我有效。我不知道其他代码为什么不行(可能是ruby版本不同?)。
<%= link_to content_tag(:span, 'Register'), {:action => "register"}, :class=>"button" %>

3

您的代码片段看起来像是一个静态链接,在Rails解释时永远不会改变;我认为在视图中插入原始HTML是安全的。

但是:

<%= link_to("#", :class=>"button small-button green-button") do %>
  Log in
  <span class="button-right"></span>
<% end %>

Reference.


1
补充Jeremy的回答 - 对于路径,可以这样写:

          <%= link_to edit_section_path(@section) do %>
              Edit
              <span class="fa fa-list pull-right"></span>
          <% end %>

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