Câu trả lời:
Các target: :_blank
tham số phải là một tham số của link_to
, trong khi bạn đặt nó trong image_tag
các thông số. Sửa đổi mã của bạn như thế này:
<%= link_to image_tag("facebook.png", class: :facebook_icon, alt: "Facebook"), "http://www.facebook.com/mypage", target: :_blank %>
Hoặc với một khối:
<%= link_to "http://www.facebook.com/mypage", target: :_blank do %>
<%= image_tag("facebook.png", class: :facebook_icon, alt: "Facebook") %>
<% end %>
Thử cái này:
<%= link_to image_tag("facebook.png", :class => "facebook_icon", :alt => "Facebook"), "http://www.facebook.com/mypage", :target => "_blank" %>
Bạn cũng có thể sử dụng target: :_blank
thay vì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 %>
Nếu bạn đang tìm cách mở một liên kết trong một tab mới trong html (cho bất kỳ ai đến đây từ Google), thì đây:
<a href="http://www.facebook.com/mypage" target="_blank">Link name</a>
target: :_blank
nghĩa của nó.
Hiểu biết của tôi là: bạn có thể yêu cầu trình duyệt mở một tab mới hoặc một trang web mới. Nhưng điều này phụ thuộc vào cài đặt người dùng. Tôi xem xét câu hỏi này trả lời.
Ngoại trừ tôi rơi vào một cái bẫy khi cần tách biệt các tùy chọn liên kết từ các tùy chọn html:
link_to(name = nil, options = nil, html_options = nil, &block)
Thí dụ:
link_to('Click me', { action: 'show', controller: 'blog', id: 1 }, { target: '_blank' })
Để thêm vào câu trả lời trước, định dạng dưới đây là những gì đang được đề xuất bởi rubocop. Đây có thể là một rủi ro bảo mật vì trang được tải sẽ có quyền kiểm soát trang trước đó và có thể thay đổi vị trí của nó cho mục đích lừa đảo.
Để ngăn chặn điều này, bạn cần thêm thuộc tính 'rel' vào mã.
rel: 'noopener'
Bây giờ link_to phải là:
<%= link_to image_tag("facebook.png", class: :facebook_icon, alt: "Facebook"), "http://www.facebook.com/mypage", target: :_blank, rel: 'noopener %>