2012-08-15 72 views
1

我有一个url,“localhost/test/http://myimage.com/”(我通过myimage.com,因为它托管在另一个网站上,我通过api访问它)我的问题是如何我是否需要编码URL的图像部分?我想过在''上做一个gsub。'和'/',然后把它们回去,但我想知道是否有更简单的方法。谢谢你的帮助。如何在params中传递一个URL?

回答

4

你可以使用URI::encode_www_form_component(str)URI::decode_www_form_component

检查:http://www.ruby-doc.org/stdlib-1.9.3/libdoc/uri/rdoc/URI.html

+2

注意你将有t先要求'uri''。 – 2012-08-15 02:24:22

+0

这很好,谢谢Piotr。然而,当我使用它的时候,我得到了RoutingError,从我看来,这是因为'。'。它保留在URL中。对此有何想法? – user1524775 2012-08-15 02:54:26

+0

是的,这是因为通常点应该跟格式和Rails(因为我假设你使用rails)期望格式。有很多方法可以解决这个问题,但是我建议您将图像url放在查询参数中,以便您有localhost/test?image = escaped_query。 – 2012-08-15 03:22:49

1

您可以使用URI库逃脱和反转义的URL

require 'uri' 
escaped = URI.escape(data, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]")) 

,你可以取回数据与

original = URI.unescape(escaped)