Schienen: Link in neuem Tab öffnen (mit 'link_to')

139

Ich habe diesen Code:

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

Wie kann ich es in einem neuen Tab öffnen, wenn ein Benutzer auf den Link klickt?

Dantes
quelle

Antworten:

269

Der target: :_blank Parameter sollte ein Parameter von sein link_to, während Sie ihn in image_tagParameter einfügen. Ändern Sie Ihren Code wie folgt:

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

Oder mit einem Block:

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

Versuche dies:

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

Sie können auch target: :_blankanstelle von verwendentarget: '_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
quelle
3

Wenn Sie suchen, wie Sie einen Link in einem neuen Tab in HTML öffnen können (für alle, die von Google hierher gekommen sind), hier:

<a href="http://www.facebook.com/mypage" target="_blank">Link name</a>
Spaßzeit
quelle
8
Ich werde Sie nicht ablehnen, aber auf dieser Seite geht es speziell um Rubys link_to (vom Titel).
Herb Meehan
1
@HerbMeehan Ich bin mir nicht sicher, ob ich abstimmen soll, aber es ist irgendwie nützlich, um zu erklären, was das target: :_blankbedeutet.
Andrew Grimm
1

Mein Verständnis ist: Sie können den Browser bitten, einen neuen Tab oder eine neue Site zu öffnen. Dies hängt jedoch von den Benutzereinstellungen ab. Ich halte diese Frage für beantwortet.

Außer ich bin in eine Falle geraten, wenn es notwendig ist, die Linkoptionen von den HTML-Optionen zu trennen:

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

Beispiel:

link_to('Click me', { action: 'show', controller: 'blog', id: 1 }, { target: '_blank' })
Manuel
quelle
Vielen Dank für Ihre Antwort, ersparte mir 2 Stunden Debuggen und Testen
Carlos J García
1

Um die vorherige Antwort zu ergänzen, wird das folgende Format von rubocop vorgeschlagen. Dies kann ein Sicherheitsrisiko darstellen, da die geladene Seite die Kontrolle über die vorherige Seite hat und ihren Speicherort für Phishingzwecke ändern kann.

Um dies zu verhindern, muss dem Code das Attribut 'rel' hinzugefügt werden.

rel: 'noopener'

Jetzt sollte der link_to sein:

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

rubocop docs

Moody_drew
quelle