web-dev-qa-db-fra.com

Rails: Ouvrir le lien dans un nouvel onglet (avec 'link_to')

J'ai ce code:

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

Comment puis-je le faire ouvrir dans un nouvel onglet lorsqu'un utilisateur clique sur le lien?

134
Dantes

Le paramètre target: :_blank Doit être un paramètre de link_to, Alors que vous le placez dans les paramètres image_tag. Modifiez votre code comme ceci:

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

Ou avec un bloc:

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

Essaye ça:

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

Vous pouvez aussi utiliser target: :_blank au lieu de target: '_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 %>
8
Deepak Mahakale

Si vous cherchez comment ouvrir un lien dans un nouvel onglet au format HTML (pour quiconque est venu ici de Google), ici:

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

Ma compréhension est la suivante: vous pouvez demander au navigateur d’ouvrir un nouvel onglet ou un nouveau site. Mais cela dépend des paramètres de l'utilisateur. Je considère que cette question a répondu.

Sauf que je suis tombé dans un piège quand il est nécessaire de séparer les options de lien des options html:

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

Exemple:

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