Alex
Alex

Reputation: 4507

Can I use a link_to to generate a link with a span inside?

I am basically trying to get this result:

        <a href="#" class="button small-button green-button">
            Log in
            <span class="button-right"></span>
        </a>

But I don't know how to do this with a link_to in rails 3 ?

Upvotes: 20

Views: 13978

Answers (5)

jakeforaker
jakeforaker

Reputation: 1657

To add to Jeremy's answer - for a path, like so:

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

Upvotes: 1

Nikhil Nanjappa
Nikhil Nanjappa

Reputation: 6632

The simplest way to do it is by using html_safe or raw functions

<%= link_to 'Log In<span class="button-right"></span>'.html_safe %>

or using raw function (recommended)

<%= link_to raw('Log In<span class="button-right"></span>') %>

Simple as it can get !!

Don’t use html_safe method unless you’re sure your string isn’t nil. Instead use the raw() method, which wont raise an exception on nil.

Upvotes: 4

vinga
vinga

Reputation: 2012

The following worked for me. I don't know why other pieces of code didn't (different ruby version?).

<%= link_to content_tag(:span, 'Register'), {:action => "register"}, :class=>"button" %>

Upvotes: 3

lbz
lbz

Reputation: 9728

Your snippet looks like a static link, that will never change when interpreted by Rails; I suppose its save to insert the raw HTML in your view.

However:

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

Reference.

Upvotes: 3

Paige Ruten
Paige Ruten

Reputation: 176635

You can use the block form of link_to for that:

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

Upvotes: 46

Related Questions