레일즈 : 새 탭에서 링크 열기 ( 'link_to'사용)


139

이 코드가 있습니다 :

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

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

답변:


269

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

14

이 시도:

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

8

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

3

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

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

8
나는 당신을 하향 투표하지 않을 것이지만,이 페이지는 Ruby의 link_to (제목에서)에 관한 것입니다.
Herb Meehan

1
@HerbMeehan 공감 여부는 확실하지 않지만 그 target: :_blank의미 를 설명하는 데 유용 합니다.
Andrew Grimm

1

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

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

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

예:

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

답변 해 주셔서 감사합니다. 2 시간 동안 디버깅 및 테스트를 완료했습니다.
Carlos J García

1

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.