【问题标题】:Opening nav links in new tab在新选项卡中打开导航链接
【发布时间】:2018-01-03 17:57:13
【问题描述】:

我想让“商店”页面在新选项卡中打开,我知道你可以在 hrefs 和 link_to 上设置 target: :_blank,但我不知道如何在此处设置它。任何帮助表示赞赏。

 def nav_items
    [
      {
        url: root_path,
        title: 'Home'
      },
      {
        url: shop_path,
        title: 'Shop', target: :_blank
      },
      {
        url: subscribe_path,
        title: 'Subscribe'
      },
      {
        url: about_path,
        title: 'About'
      },
      {
        url: contact_path,
        title: 'Contact'
      },
    ]
  end

  def nav_helper style, tag_type
    nav_links = ''

    nav_items.each do |item|
      nav_links << "<#{tag_type}><a href='#{item[:url]}' class='#{style} #{active? item[:url]}'>#{item[:title]}</a></#{tag_type}>"
    end

    nav_links.html_safe
  end

【问题讨论】:

  • 你不能只在 nav_items 循环的锚标记内添加target="_BLANK" 吗?您希望在哪里尝试在 nav_items 方法中准确实现这一目标?
  • 也许使用现有的 Rails 助手如content_tag 来生成 HTML 元素是有意义的。另外,如果我可以从外部修改urltitle,那么在这种情况下使用html_safe 方法可能会导致XSS 攻击。

标签: html ruby-on-rails ruby


【解决方案1】:

只需在此处添加target="_blank"(参见a 标签):

nav_items.each do |item|
  nav_links << "<#{tag_type}><a href='#{item[:url]}' #{'target=\"_blank\"' if item[:title] == 'Shop'} class='#{style} #{active? item[:url]}'>#{item[:title]}</a></#{tag_type}>"
end

我认为应该这样做吗?希望对您有所帮助 - 如果没有,请告诉我,我会看看还有什么我能想到的:)

【讨论】:

  • 我刚试过这个,它使每个链接在新标签页中打开,因为它是一个 each do 块。它有效,但我只想在“商店”链接上使用它。
  • 抱歉,错过了。我现在已经更新但无法检查,因为我只在我的手机上。希望那会排序:)
【解决方案2】:
def nav_items
  [
    {
      url: root_path,
      title: 'Home'
    },
    {
      url: shop_path,
      title: 'Shop', 
      target: '_blank'  # Now a String
    },
    {
      url: subscribe_path,
      title: 'Subscribe'
    },
    {
      url: about_path,
      title: 'About'
    },
    {
      url: contact_path,
      title: 'Contact'
    },
  ]
end

def nav_helper style, tag_type
  nav_links = ''

  nav_items.each do |item|
    # Print target= if item[:target] is set
    nav_links << "<#{tag_type}><a href='#{item[:url]}' #{"target=" + item[:target] if item[:target]} class='#{style} #{active? item[:url]}'>#{item[:title]}</a></#{tag_type}>"
  end

  nav_links.html_safe
end

【讨论】:

    猜你喜欢
    • 2021-06-19
    • 2020-09-02
    • 2022-01-19
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-14
    相关资源
    最近更新 更多