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?

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 %>  

14

Prueba esto:

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

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 %>

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>

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' })

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.