Utiliser link_to avec HTML intégré

J’utilise le matériel de démarrage de Twitter et j’ai le code HTML suivant:

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

Quelle est la meilleure façon de faire cela dans Rails? Je voudrais utiliser mais le me rejette?

Deux façons. Non plus:

 <%= link_to user_path(@user) do %>  Do it@ <% end %> 

Ou:

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

J’ai eu le même besoin récemment. Essaye ça:

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

Si vous voulez un lien dans les rails qui utilise la même classe d’icons que celle de Twitter, tout ce que vous avez à faire est quelque chose comme ça.

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

Vous avez également la possibilité de créer une méthode d’assistance comme ci-dessous:

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

Adaptez les classes à vos besoins.

Dans le joyau twitter-bootstrap-rail: ils créent un glyphe d’aide

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

Vous pouvez donc l’utiliser comme: glyph(:twitter) et que l’assistant de lien pourrait ressembler à: link_to glyph(:twitter), user_path(@user)

Utiliser HAML:

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

Je vais donner un coup de feu puisque vous n’avez pas encore accepté de réponse
et les autres réponses ne sont pas à 100% ce que vous cherchiez.
C’est la façon de faire le chemin Rails.

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

Edit: laissant ma réponse pour référence future,
mais @ justin-herrick a la bonne réponse quand
travailler avec Twitter Bootstrap.

Je pense que vous pouvez le simplifier grâce à une méthode d’assistance si vous l’utilisez fréquemment dans votre application.

mettez-le dans 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 

Ensuite, appelez-le depuis votre fichier de vue, tout comme link_to

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

Si vous utilisez le bootstrap 3.2.0, vous pouvez utiliser cet assistant dans votre 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 

et puis, dans vos vues:

 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 

En HTML normal, nous faisons,

  Register 

En Ruby On Rails:

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

C'est ma sortie

Helper basé sur la suggestion de Titas Milan, mais en utilisant un bloc:

 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