ruby-on-rails - link_to - links en rails
Usar link_to con HTML incrustado (12)
Estoy usando Twitter Bootstrap y tengo el siguiente HTML:
<a class="btn" href="<%= user_path(@user) %>"><i class="icon-ok icon-white"></i> Do it@</a>
¿Cuál es la mejor manera de hacer esto en Rails? Me gustaría usar <%= link_to ''Do it'', user_path(@user) %>
pero el <i class="icon-ok icon-white"></i>
está tirando?
Ayudante basado en la sugerencia de Titas Milan, pero usando un bloque:
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
Creo que puede simplificarlo a través de un método de ayuda si lo usa con frecuencia en su aplicación.
ponerlo en 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
Luego llámalo desde tu archivo de vista al igual que link_to
<%= show_link "Do it", user_path(@user) %>
Dos caminos. Ya sea:
<%= link_to user_path(@user) do %>
<i class="icon-ok icon-white"></i> Do it@
<% end %>
O:
<%= link_to ''<i class="icon-ok icon-white"></i> Do it@''.html_safe, user_path(@user) %>
En la gema twitter-bootstrap-rail: crean un glifo auxiliar
def glyph(*names)
content_tag :i, nil, :class => names.map{|name| "icon-#{name.to_s.gsub(''_'',''-'')}" }
end
Entonces puedes usarlo como: glyph(:twitter)
y tu link helper podría verse así: link_to glyph(:twitter), user_path(@user)
Le daré una oportunidad ya que aún no ha aceptado una respuesta
y las otras respuestas no son el 100% de lo que estabas buscando.
Esta es la forma de hacerlo a la manera de Rails.
<%= link_to(user_path(@user), :class => ''btn'') do %>
<i class="icon-ok icon-white"> </i> Do it!
<% end %>
Editar: dejando mi respuesta para referencia futura,
pero @ justin-herrick tiene la respuesta correcta cuando
trabajando con Twitter Bootstrap.
Si desea un enlace en rieles que use esa misma clase de iconos de Twitter bootstrap, todo lo que necesita hacer es algo como esto.
<%= link_to "Do it@", user_path(@user), :class => "btn icon-ok icon-white" %>
Si está utilizando el programa de arranque 3.2.0, puede usar este asistente en su 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
y luego, en tus puntos de vista:
link_to glyph(:pencil) + '' Edit'', edit_post_path(@post), class: ''btn btn-warning''
También tienes la posibilidad de crear un método de ayuda como el siguiente:
def link_fa_to(icon_name, text, link)
link_to content_tag(:i, text, :class => "fa fa-#{icon_name}"), link
end
Adapte las clases a sus necesidades.
Tuve la misma necesidad recientemente. Prueba esto:
<%= link_to ''<i class="icon-ok icon-white"></i> Do it''.html_safe, user_path(@user) %>
Usando HAML:
= link_to model_path do
%img{src: ''/assets/someimg.png''}
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