[ruby-on-rails] 레일즈 : 새 탭에서 링크 열기 ( ‘link_to’사용)

이 코드가 있습니다 :

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

사용자가 링크를 클릭 할 때 새 탭에서 열려면 어떻게해야합니까?



답변

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


답변

이 시도:

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


답변

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


답변

html의 새 탭에서 링크를 여는 방법을 찾고 있다면 (Google에서 온 사람) 여기 :

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


답변

내 이해는 : 브라우저에 새 탭이나 새 사이트를 열도록 요청할 수 있습니다. 그러나 이것은 사용자 설정에 따라 다릅니다. 이 질문에 대한 답변이 있다고 생각합니다.

링크 옵션을 html 옵션에서 분리해야 할 때 함정에 빠진 것을 제외하고는 :

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

예:

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


답변

이전 답변에 추가하기 위해 아래 형식은 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 문서


답변