154

我有这个代码:

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

当用户单击链接时,如何使其在新选项卡中打开?

4

6 回答 6

301

target: :_blank 参数应该是 的参数, link_to而你把它放在image_tag参数中。像这样修改你的代码:

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

或者用一个块:

<%= link_to "http://www.facebook.com/mypage", target: :_blank do %>
  <%= image_tag("facebook.png", class: :facebook_icon, alt: "Facebook") %>     
<% end %>  
于 2012-08-26T21:11:49.227 回答
14

试试这个:

<%= link_to image_tag("facebook.png", :class => "facebook_icon", :alt => "Facebook"), "http://www.facebook.com/mypage", :target => "_blank" %>
于 2012-08-26T21:13:49.607 回答
10

您也可以使用target: :_blank而不是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 %>
于 2016-09-20T14:35:15.063 回答
3

如果您正在寻找如何在 html 中的新选项卡中打开链接(适用于来自 Google 的任何人),请点击此处:

<a href="http://www.facebook.com/mypage" target="_blank">Link name</a>
于 2014-03-25T22:00:48.837 回答
3

要添加到先前的答案,以下格式是 rubocop 建议的格式。这可能会带来安全风险,因为加载的页面将控制前一页面,并且可能会更改其位置以进行网络钓鱼。

为了防止这种情况,需要在代码中添加“rel”属性。

rel: 'noopener'

现在 link_to 应该是:

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

rubocop 文档

于 2020-03-04T20:35:57.540 回答
2

我的理解是:你可以要求浏览器打开一个新标签页或者一个新站点。但这取决于用户设置。我认为这个问题得到了回答。

除非当有必要将链接选项与 html 选项分开时,我陷入了陷阱:

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

例子:

link_to('Click me', { action: 'show', controller: 'blog', id: 1 }, { target: '_blank' })
于 2018-07-29T15:36:01.603 回答