我有一个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,任何合适的宝石?或者一般的方法。
感谢。
答案 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>"
答案 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") %>