web-dev-qa-db-fra.com

Utiliser link_to avec HTML incorporé

J'utilise Twitter Bootstrap) et j'ai le code HTML suivant:

<a class="btn" href="<%= user_path(@user) %>"><i class="icon-ok icon-white"></i> Do it@</a>

Quelle est la meilleure façon de faire cela dans Rails? J'aimerais utiliser <%= link_to 'Do it', user_path(@user) %> mais le <i class="icon-ok icon-white"></i> Me rejette?

96
Vanessa L'olzorz

Deux voies. Non plus:

<%= link_to user_path(@user) do %>
  <i class="icon-ok icon-white"></i> Do it@
<% end %>

Ou:

<%= link_to '<i class="icon-ok icon-white"></i> Do it@'.html_safe, user_path(@user) %>
250
Veraticus

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

<%= link_to '<i class="icon-ok icon-white"></i> Do it'.html_safe, user_path(@user) %>

16
Eric Farkas

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 cours à vos besoins.

9
Renshuki

Si vous voulez un lien dans Rails qui utilise la même classe d'icônes de Twitter bootstrap), il vous suffit de procéder de la sorte.

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

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

Donc, vous pouvez l'utiliser comme: glyph(:Twitter) et votre aide de lien pourrait ressembler à: link_to glyph(:Twitter), user_path(@user)

6
eveevans

Utilisation de HAML:

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

Je vais donner un coup de feu depuis que vous n'avez pas encore accepté de réponse
et les autres réponses ne correspondent pas à 100% à vos attentes.
C’est le moyen de le faire de la manière Rails.

<%= link_to(user_path(@user), :class => 'btn') do %>
  <i class="icon-ok icon-white"> </i> Do it!
<% end %>

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

3
Webdevotion

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

le mettre 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

Puis appelez-le à partir de votre fichier de vue, tout comme link_to

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

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 ensuite, selon vous:

link_to glyph(:pencil) + ' Edit', edit_post_path(@post), class: 'btn btn-warning'
1
Kleber S.

En HTML normal nous faisons,

<a href="register.html"><i class="fa fa-user-plus"></i> Register</a>

Dans Ruby sur Rails:

<%= link_to routeName_path do %>
  <i class="fa fa-user-plus"></i> Link Name
<% end %>

<%= link_to register_path do %>
   <i class="fa fa-user-plus"></i> Register
<% end %>

This is My Output

1
Ovi
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
1
mr i.o

Helper basé sur la suggestion de Titas Milan, mais 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
0
meleyal