У меня есть такой код:
<%= link_to image_tag("facebook.png", :class => "facebook_icon", :alt => "Facebook", :target => "_blank"),
"http://www.facebook.com/mypage" %>
Как сделать так, чтобы она открывалась в новой вкладке, когда пользователь нажимает на ссылку?
ruby-on-rails
ruby
ruby-on-rails-3
Дантес
источник
источник
target: :_blank
означает.Я так понимаю: вы можете попросить браузер открыть новую вкладку или новый сайт. Но это зависит от настроек пользователя. Считаю ответ на этот вопрос.
За исключением того, что я попал в ловушку, когда необходимо отделить параметры ссылки от параметров 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 docs
источник