【问题标题】:Convert all link in HTML to absolute path将 HTML 中的所有链接转换为绝对路径
【发布时间】:2014-10-30 23:59:14
【问题描述】:

我有一个 HTML 字符串,例如,

<html>
  <body>
    <a href="/image/myimage.png"/>
  </body>
</html>

如何将所有相对路径转换成绝对路径,像这样?

<html>
  <body>
    <a href="http://example.com/image/myimage.png"/>
  </body>
</html>

我正在使用 Ruby on Rails,有什么合适的 gem 吗?或者一种通用的方法。

谢谢。

【问题讨论】:

标签: html ruby-on-rails ruby relative-path absolute-path


【解决方案1】:

这是我前段时间得到的一个 JS 函数,不是我的,也不记得我在哪里找到它(有它作为一个 sn-p,所以归功于编写它的人),但它确实创造了奇迹:

var absolutePath = function(href) {
    var link = document.createElement("a");
    link.href = href;
    return (link.protocol+"//"+link.host+link.pathname+link.search+link.hash);
}

编辑:寻找上述sn-p的作者,为你找到了一个Ruby版本:

[code = ruby]
Class String
  @@base = "http://example.com"
  def to_link
    "#{@@base}/folder/#{to_s}"
  end
  def to_js
    "#{@@base}/#{to_s}"
  end
end
[/code]

然后输入"&lt;a href = #{'link.html'.to_link}&gt;some link&lt;/a&gt;"

来自Rails Forum

【讨论】:

    【解决方案2】:

    网址

    您可能正在寻找 _url 助手。

    _path_url 助手之间的区别在于 _url 助手将加载绝对路径,而 _path 将相对于您当前的 URL。这是great resource

    *_path 用于视图,因为 ahref 隐式链接到当前 URL。所以一遍又一遍地重复它会浪费字节。 但是,在控制器中,redirect_to 需要 *_url,因为 HTTP 规范要求 Location: 3xx 中的标头重定向 是一个完整的 URL。

    这意味着,从您的问题来看,您最适合changing any of your _path references to _url

    <%= link_to "", image_url("myimage.png") %>
    

    【讨论】:

      猜你喜欢
      • 2016-11-12
      • 2014-01-28
      • 2017-08-01
      • 2011-11-07
      • 2011-05-02
      相关资源
      最近更新 更多