Can I use a link_to to generate a link with a span inside?
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 %>
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 %>