2013-07-26 2 views
0

이미지 첨부 파일의 URL을 인코딩하려고하지만 CGI :: escape 또는 URI.escape를 사용하여 모든 것을 인코딩하는 것처럼 보입니다. 난 단지 쉼표와 공백이 인코딩되어 있어야하고, 다른 것은 필요 없다. 레일에서 그 일을 어떻게 하죠? 나는 gsub을했지만, 쉼표 나 공백을 대신 할 수는 없으며 둘 다를 대체 할 수 있습니다. 둘 다 할 수있는 방법이 있습니까?공백과 쉼표 만 URL에 인코딩합니다.

http://"URL"?operation=getfieldclip&outlinePoints=600%2C600%2C400%2CTest Area%2C44.982643%2C-94.696723%2C44.982343%2C-94.696723%2C44.982293%2C-94.697170%2C44.982293%2C-94.697555%2C44.982313%2C-94.697740%2C44.982333%2C-94.697987%2C44.982363%2C-94.698110%2C44.982403%2C-94.698233%2C44.982453%2C-94.698341%2C44.982493%2C-94.698511%2C44.982553 

쉼표를 변경할 수는 있지만 동시에 공간을 변경하는 방법을 잘 모르겠습니다.

+0

URL로 사용하려는 경우 다른 문자도 인코딩해야합니다. 왜 인코딩되지 않은 다른 문자를 남기고 싶은가요? – sawa

+0

어떤 이유에서 '&'또는 '?' 나에게 404를주는 url을 줄 것이다. "outlinePoints"뒤에 쉼표와 공백 만 인코딩하면 필요에 따라 작동한다. – JPatel

답변

2

CGI.escape을 사용해야합니다. 전체 URL에는 사용하지 말고 값에 대해서만 사용하십시오.

require "cgi" 
"http://URL?" + params.map{|k, v| "#{k}=#{CGI.escape(v)}"}.join("&") 
+0

좋아요, 그래서 URL은 다음과 같이 설정됩니다 : url = "# {Settings.sei_gis_url}/ImageOps/imageop? operation = getfieldclip & outlinePoints = # {경계} & drawnames = 1"' # {경계}는 공백과 쉼표로 인코딩됩니다. 나는 당신의 솔루션을 어떻게 사용할 수 있을지 모르겠습니다. – JPatel

+1

'params = { "operation"=> "getfieldclip", "outlinePoints"=> 경계선, "drawnames"=> "1"} ' – sawa

+0

감사합니다. 그것은 트릭을했다. – JPatel

관련 문제