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?

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

14

Versuche dies:

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

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

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>

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

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.