I am basically trying to get this result:
Log in
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.
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.
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 %>
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" %>
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 %>