2011-08-10 7 views
3

가능한 중복 : 내 영어에 대한
How do I easily parse a URL with parameters in a Rails test?레일, url 문자열에서 매개 변수를 가져 오는 방법은 무엇입니까?

미안 ... 내 archives.rb 모델의 모든 SRC를 얻을 수있는 방법이

는 HTML 콘텐츠에서 속성 , 나는 src를 좋아해요 :

http://localhost:3000/es/editor/archives/28/show_image?x=142&y=142

,210

은 내가 특별히, 해당 URL에서 PARAMS을 얻을 필요가 : ID, X, Y

감사, 감사합니다.

답변

-17

그것은 예를 들어

irb(main):011:0> s = "http://localhost:3000/es/editor/archives/28/show_image?x=142&y=142" 
=> "http://localhost:3000/es/editor/archives/28/show_image?x=142&y=142" 
irb(main):012:0> s[/.*\/(\d+).+x=(\d+).*y=(\d+)/,1] 
=> "28" 
irb(main):013:0> s[/.*\/(\d+).+x=(\d+).*y=(\d+)/,2] 
=> "142" 
irb(main):014:0> s[/.*\/(\d+).+x=(\d+).*y=(\d+)/,3] 
=> "142" 
irb(main):015:0> 
+2

이렇게 여러 가지 방법으로 실패 할 수 있습니다. 강력한 파서가 이미 존재할 때 비정상적인 Regex를 사용하지 않겠습니다. –

+0

이렇게 답이 좋지 않으면 dup answer 링크에 설명 된대로 CGI 구문 분석을 사용하십시오. – DGM

+0

나는 대답이 ** poor **이고 DGM의 답변은 ** correct ** 두 접근법 모두 url의 구조에 의존하기 때문에 동의한다. 세 가지 매개 변수와 DGM을 얻고 id를 얻으려면 내 것이다. URL이 다르면 둘 다 실패합니다. 나는 x 값과 y 값을 얻기 위해 CGI를 사용하는 것이 꽤 닮았다는 것에 동의한다. – Bohdan

2

컨트롤러에서 'params [: x]'및 'params [: y]'할 수 있습니다. 예를 들면 :

x = params[:x] 
y = params[:y] 
+1

감사하지만 ... 내가 그렇게 할 수 없습니다 , 첫 번째 : 내 코드는 모델에 있고 두 번째 URL은 html 텍스트 코드에서 추출한 문자열입니다. –

10

올바른 접근 일부 정규 표현식을 사용하여 수행 할 수 있습니다

url = "http://localhost:3000/es/editor/archives/28/show_image?x=142&y=142" 
uri = URI::parse(url) 
id = uri.path.split('/')[4] 
params = CGI::parse(uri.query) 
+0

당신은'id'에 대해 잊어 버렸습니다. – Bohdan

+0

이 ID를 얻기 위해 업데이트되었습니다. :) – DGM

+0

편집이 잘못되었습니다. 수정 제안 된 수정이 잘못되었습니다. 나는 그것을 바로 잡았다. – DGM

관련 문제