Rails: Buka tautan di tab baru (dengan 'link_to')

139

Saya punya kode ini:

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

Bagaimana saya bisa membuatnya terbuka di tab baru ketika pengguna mengklik tautan?

Dantes
sumber

Jawaban:

269

The target: :_blank parameter harus menjadi parameter link_to, sedangkan Anda memasukkannya ke dalam image_tagparameter. Ubah kode Anda seperti ini:

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

Atau dengan blok:

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

Coba ini:

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

Anda juga dapat menggunakan target: :_blankbukannyatarget: '_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
sumber
3

Jika Anda mencari cara membuka tautan di tab baru dalam html (bagi siapa saja yang datang ke sini dari Google), di sini:

<a href="http://www.facebook.com/mypage" target="_blank">Link name</a>
funfuntime
sumber
8
Saya tidak akan menurunkan suara Anda, tetapi halaman ini secara khusus tentang Ruby link_to (dari judul).
Ramuan Meehan
1
@HerbMeehan Saya tidak yakin apakah akan memperbaiki suara, tapi agak berguna dalam menjelaskan apa target: :_blankartinya.
Andrew Grimm
1

Pemahaman saya adalah: Anda dapat meminta browser untuk membuka tab baru atau situs baru. Tetapi ini tergantung pada pengaturan pengguna. Saya menganggap pertanyaan ini terjawab.

Kecuali saya jatuh dalam perangkap ketika perlu untuk memisahkan opsi tautan dari opsi html:

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

Contoh:

link_to('Click me', { action: 'show', controller: 'blog', id: 1 }, { target: '_blank' })
Manuel
sumber
terima kasih atas jawaban Anda, menyelamatkan saya 2 jam dari debugging dan pengujian
Carlos J García
1

Untuk menambahkan jawaban sebelumnya format di bawah ini adalah apa yang disarankan oleh rubocop. Ini bisa menjadi risiko keamanan karena halaman yang dimuat akan memiliki kontrol atas halaman sebelumnya dan dapat mengubah lokasinya untuk tujuan phishing.

Untuk mencegah hal ini, perlu menambahkan atribut 'rel' ke kode.

rel: 'noopener'

Sekarang tautannya adalah:

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

rubocop docs

moody_drew
sumber