Usando link_to con HTML incorporato

Sto usando la roba Bootstrap di Twitter e ho il seguente codice HTML:

<a class="btn" href="https://stackoverflow.com/questions/9401942/using-link-to-with-embedded-html/"> Do [email protected] 

Qual è il modo migliore per farlo in Rails? Mi piacerebbe usare ma sta buttando via?

Due strade. O:

 <%= link_to user_path(@user) do %>  Do [email protected] <% end %> 

O:

 <%= link_to ' Do [email protected]'.html_safe, user_path(@user) %> 

Ho avuto lo stesso bisogno di recente. Prova questo:

<%= link_to ' Do it'.html_safe, user_path(@user) %>

Se vuoi un collegamento in rotaie che usi la stessa class di icone da twitter bootstrap, tutto ciò che devi fare è qualcosa di simile.

 <%= link_to "Do [email protected]", user_path(@user), :class => "btn icon-ok icon-white" %> 

Hai anche la possibilità di creare un metodo di supporto come di seguito:

 def link_fa_to(icon_name, text, link) link_to content_tag(:i, text, :class => "fa fa-#{icon_name}"), link end 

Adatta le classi alle tue esigenze.

Nella gem twitter-bootstrap-rail: creano un glifo di supporto

  def glyph(*names) content_tag :i, nil, :class => names.map{|name| "icon-#{name.to_s.gsub('_','-')}" } end 

Quindi puoi usarlo come: glyph(:twitter) e il tuo helper di collegamento potrebbe essere simile a: link_to glyph(:twitter), user_path(@user)

Utilizzando HAML:

 = link_to model_path do %img{src: '/assets/someimg.png'} 

Darò uno scatto perché non hai ancora accettato una risposta
e le altre risposte non sono al 100% quello che stavi cercando.
Questo è il modo di farlo in modo Rails.

 <%= link_to(user_path(@user), :class => 'btn') do %>   Do it! <% end %> 

Modifica: lasciando la mia risposta per riferimento futuro,
ma @ justin-herrick ha la risposta corretta quando
lavorando con Twitter Bootstrap.

Penso che tu possa semplificarlo attraverso un metodo di supporto se lo usi frequentemente nella tua applicazione.

mettilo in helper / application_helper.rb

 def show_link(link_text, link_source) link_to("#{content_tag :i, nil, class: 'icon-ok icon-white'} #{link_text}".html_safe, link_source, class: "btn") end 

Quindi chiamalo dal tuo file di visualizzazione proprio come link_to

 <%= show_link "Do it", user_path(@user) %> 

Se stai usando il bootstrap 3.2.0, puoi usare questo helper nella tua app/helpers/application_helper.rb

 module ApplicationHelper def glyph(*names) content_tag :i, nil, :class => names.map{|name| "glyphicon glyphicon-#{name.to_s.gsub('_','-')}" } end end 

e poi, nelle tue opinioni:

 link_to glyph(:pencil) + ' Edit', edit_post_path(@post), class: 'btn btn-warning' 
 def show_link (source, text) link_to source, {'data-original-title' => 'Show', 'data-toggle' => 'tooltip', :class => 'btn btn-xs btn-success'} do "#{text} #{content_tag :i, nil, class:' glyphicon glyphicon-eye-open' }".html_safe end end 

Nel normale HTML lo facciamo,

  Register 

In Ruby On Rails:

 <%= link_to routeName_path do %>  Link Name <% end %> <%= link_to register_path do %>  Register <% end %> 

Questa è la mia uscita

Helper basato sul suggerimento di Titas Milan, ma usando un blocco:

 def show_link(link_text, link_source) link_to link_source, { class: 'btn' } do "#{content_tag :i, nil, class: 'icon-ok icon-white'} #{link_text}".html_safe end end