ruby-on-rails Rails:在新选项卡中打开链接(使用“link_to”)

46scxncf  于 2023-01-27  发布在  Ruby
关注(0)|答案(6)|浏览(134)

我有这个代码:

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

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

r55awzrz

r55awzrz1#

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

l3zydbqr2#

试试这个:

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

ogsagwnx3#

您也可以使用target: :_blank代替target: '_blank'

<%= link_to image_tag("facebook.png", class: "facebook_icon", alt: "Facebook"), "http://www.facebook.com/mypage", target: :_blank %>
    • 一米二米一x**
<%= link_to "http://www.facebook.com/mypage", target: :_blank do %>
  <%= image_tag "facebook.png", class: "facebook_icon", alt: "Facebook" %>
<% end %>
v9tzhpje

v9tzhpje4#

为了补充前面的答案,下面的格式是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 docs

zy1mlcev

zy1mlcev5#

如果你正在寻找如何在html中打开一个新标签页中的链接(对于任何从谷歌来到这里的人),在这里:

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

x6h2sr286#

我的理解是:你可以要求浏览器打开一个新的标签或一个新的网站。2但这取决于用户的设置。3我认为这个问题已经回答了。
除了我陷入了一个陷阱时,有必要分离链接选项从html选项:
link_to(name = nil, options = nil, html_options = nil, &block)
示例:

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

相关问题