Rieles: abra el enlace en una pestaña nueva (con 'link_to')

139

Tengo este codigo:

<%= link_to image_tag("facebook.png", :class => "facebook_icon", :alt => "Facebook", :target => "_blank"),                 
            "http://www.facebook.com/mypage" %>

¿Cómo puedo abrirlo en una nueva pestaña cuando un usuario hace clic en el enlace?

Dantes
fuente

Respuestas:

269

El target: :_blank parámetro debe ser un parámetro de link_to, mientras que lo pones en image_tagparámetros. Modifique su código así:

<%= link_to image_tag("facebook.png", class: :facebook_icon, alt: "Facebook"), "http://www.facebook.com/mypage", target: :_blank %>

O con un bloque:

<%= link_to "http://www.facebook.com/mypage", target: :_blank do %>
  <%= image_tag("facebook.png", class: :facebook_icon, alt: "Facebook") %>     
<% end %>  
Baldrick
fuente
14

Prueba esto:

<%= link_to image_tag("facebook.png", :class => "facebook_icon", :alt => "Facebook"), "http://www.facebook.com/mypage", :target => "_blank" %>
Alexander Giraldo
fuente
8

También puedes usar en target: :_blanklugar detarget: '_blank'

<%= link_to image_tag("facebook.png", class: "facebook_icon", alt: "Facebook"), "http://www.facebook.com/mypage", target: :_blank %>

link_to do

<%= link_to "http://www.facebook.com/mypage", target: :_blank do %>
  <%= image_tag "facebook.png", class: "facebook_icon", alt: "Facebook" %>
<% end %>
Deepak Mahakale
fuente
3

Si está buscando cómo abrir un enlace en una nueva pestaña dentro de html (para cualquiera que haya venido desde Google), aquí:

<a href="http://www.facebook.com/mypage" target="_blank">Link name</a>
Funfuntime
fuente
8
No voy a rechazarte, pero esta página trata específicamente del link_to (del título) de Ruby.
Herb Meehan
1
@HerbMeehan No estoy seguro de si votar, pero es útil para explicar lo que target: :_blanksignifica.
Andrew Grimm
1

Mi entendimiento es: puede pedirle al navegador que abra una nueva pestaña o un nuevo sitio. Pero esto depende de la configuración del usuario. Considero esta pregunta respondida.

Excepto que caí en una trampa cuando es necesario separar las opciones de enlace de las opciones html:

link_to(name = nil, options = nil, html_options = nil, &block)

Ejemplo:

link_to('Click me', { action: 'show', controller: 'blog', id: 1 }, { target: '_blank' })
Manuel
fuente
gracias por su respuesta, me ahorró 2 horas de depuración y prueba
Carlos J García
1

Para agregar a la respuesta anterior, el formato a continuación es lo que sugiere rubocop. Esto puede ser un riesgo de seguridad, ya que la página cargada tendrá control sobre la página anterior y podría cambiar su ubicación con fines de phishing.

Para evitar esto, es necesario agregar el atributo 'rel' al código.

rel: 'noopener'

Ahora el link_to debería ser:

<%= link_to image_tag("facebook.png", class: :facebook_icon, alt: "Facebook"), "http://www.facebook.com/mypage", target: :_blank, rel: 'noopener %>

documentos de rubocop

moody_drew
fuente