Rotaie: apri il link in una nuova scheda (con "link_to")


139

Ho questo codice:

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

Come posso aprirlo in una nuova scheda quando un utente fa clic sul collegamento?

Risposte:


269

Il target: :_blank parametro dovrebbe essere un parametro di link_to, mentre lo metti in image_tagparametri. Modifica il tuo codice in questo modo:

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

O con un blocco:

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

14

Prova questo:

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

8

Puoi anche usare al target: :_blankposto ditarget: '_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

Se stai cercando come aprire un collegamento in una nuova scheda in HTML (per chiunque sia venuto qui da Google), qui:

<a href="http://www.facebook.com/mypage" target="_blank">Link name</a>

8
Non ho intenzione di sottovalutarti, ma questa pagina riguarda in particolare il link_to di Ruby (dal titolo).
Herb Meehan,

1
@HerbMeehan Non sono sicuro di votare, ma è utile per spiegare cosa target: :_blanksignifica.
Andrew Grimm,

1

La mia comprensione è: puoi chiedere al browser di aprire una nuova scheda o un nuovo sito. Ma questo dipende dalle impostazioni dell'utente. Considero a questa domanda una risposta.

Tranne che sono caduto in una trappola quando è necessario separare le opzioni di collegamento dalle opzioni html:

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

Esempio:

link_to('Click me', { action: 'show', controller: 'blog', id: 1 }, { target: '_blank' })

grazie per la risposta, mi ha risparmiato 2 ore di debug e test
Carlos J García,

1

Per aggiungere alla risposta precedente il formato seguente è ciò che viene suggerito da rubocop. Questo può essere un rischio per la sicurezza poiché la pagina caricata avrà il controllo sulla pagina precedente e potrebbe cambiare la sua posizione a scopo di phishing.

Per evitare ciò, è necessario aggiungere l'attributo 'rel' al codice.

rel: 'noopener'

Ora il link_to dovrebbe essere:

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

documenti rubocop

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.