将HTML中的所有链接转换为绝对路径

时间:2014-09-06 01:15:36

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

我有一个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,任何合适的宝石?或者一般的方法。

感谢。

2 个答案:

答案 0 :(得分:0)

这是我前段时间得到的一个JS函数,不是我的,不记得我发现它的位置(将它作为一个片段,因此无论是谁编写它),但它真的有奇效:

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

编辑:寻找上述代码段的作者,为您找到了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]

然后放"<a href = #{'link.html'.to_link}>some link</a>"

来自Rails Forum

答案 1 :(得分:0)

<强>网址

您可能正在寻找_url帮助者。

_path_url助手之间的差异是_url助手将加载绝对路径,而_path将相对于您当前的网址。这是great resource

  

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

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

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