Raylar: Bağlantıyı yeni sekmede aç ('link_to' ile)


139

Bu kod var:

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

Bir kullanıcı bağlantıyı tıkladığında yeni bir sekmede nasıl açabilirim?

Yanıtlar:


269

target: :_blank Parametre bir parametre olmalıdır link_toBunu koyabileceğim oysa image_tagparametreler. Kodunuzu şu şekilde değiştirin:

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

Veya bir blokla:

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

14

Bunu dene:

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

8

Bunun target: :_blankyerinetarget: '_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

HTML içindeki yeni bir sekmede nasıl bağlantı açacağınızı arıyorsanız (buraya Google'dan gelen herkes için), burada:

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

8
Seni küçümsemeyeceğim, ancak bu sayfa özellikle Ruby'nin link_to'su (başlıktan) ile ilgili.
Herb Meehan

1
@HerbMeehan Oy verip vermeyeceğinden emin değilim, ama bunun ne target: :_blankanlama geldiğini açıklamakta fayda var .
Andrew Grimm

1

Anladığım kadarıyla: tarayıcıdan yeni bir sekme veya yeni bir site açmasını isteyebilirsiniz. Ancak bu kullanıcı ayarlarına bağlıdır. Bu sorunun cevaplandığını düşünüyorum.

Dışında bağlantı seçenekleri html seçeneklerinden ayırmak gerektiğinde bir tuzak düştü:

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

Misal:

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

Cevabınız için teşekkürler, bana 2 saat hata ayıklama ve test kurtardı
Carlos J García

1

Önceki cevaba eklemek için aşağıdaki format rubocop tarafından önerilmektedir. Yüklenen sayfa önceki sayfa üzerinde kontrol sahibi olacağından ve kimlik avı amacıyla konumunu değiştirebileceğinden bu bir güvenlik riski oluşturabilir.

Bunu önlemek için koda 'rel' niteliğini eklemeniz gerekir.

rel: 'noopener'

Şimdi link_to şöyle olmalıdır:

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

rubocop belgeleri

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.