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?

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

14

Coba ini:

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

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

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>

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

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.