Odpowiedzi:
target: :_blank
Parametr powinien być parametrem link_to
, podczas gdy można umieścić go w image_tag
parametrach. Zmodyfikuj swój kod w ten sposób:
<%= link_to image_tag("facebook.png", class: :facebook_icon, alt: "Facebook"), "http://www.facebook.com/mypage", target: :_blank %>
Lub z blokiem:
<%= link_to "http://www.facebook.com/mypage", target: :_blank do %>
<%= image_tag("facebook.png", class: :facebook_icon, alt: "Facebook") %>
<% end %>
Spróbuj tego:
<%= link_to image_tag("facebook.png", :class => "facebook_icon", :alt => "Facebook"), "http://www.facebook.com/mypage", :target => "_blank" %>
Możesz także użyć target: :_blank
zamiasttarget: '_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 %>
Jeśli szukasz sposobu, aby otworzyć link w nowej karcie w html (dla każdego, kto przyszedł tu z Google), tutaj:
<a href="http://www.facebook.com/mypage" target="_blank">Link name</a>
target: :_blank
oznacza.
Rozumiem: możesz poprosić przeglądarkę o otwarcie nowej karty lub nowej witryny. Ale to zależy od ustawień użytkownika. Uważam, że odpowiedź na to pytanie.
Z wyjątkiem tego, że wpadłem w pułapkę, kiedy konieczne jest oddzielenie opcji linków od opcji html:
link_to(name = nil, options = nil, html_options = nil, &block)
Przykład:
link_to('Click me', { action: 'show', controller: 'blog', id: 1 }, { target: '_blank' })
Aby dodać do poprzedniej odpowiedzi, poniższy format jest sugerowany przez rubocop. Może to stanowić zagrożenie dla bezpieczeństwa, ponieważ załadowana strona będzie mieć kontrolę nad poprzednią stroną i może zmienić swoją lokalizację w celu wyłudzenia informacji.
Aby temu zapobiec, należy dodać do kodu atrybut „rel”.
rel: 'noopener'
Teraz link_to powinno być:
<%= link_to image_tag("facebook.png", class: :facebook_icon, alt: "Facebook"), "http://www.facebook.com/mypage", target: :_blank, rel: 'noopener %>