[RUBY-ON-RAILS] 어떻게 루비 또는 레일이있는 URL에서 URL 매개 변수를 추출하는?
RUBY-ON-RAILS어떻게 루비 또는 레일이있는 URL에서 URL 매개 변수를 추출하는?
내가 좋아하는, 일부 URL이
http://www.example.com/something?param1=value1¶m2=value2¶m3=value3
그리고 나는이 URL의 매개 변수를 추출하고 해시에서 그들을 좀하고 싶습니다. 분명히, 나는 정규 표현식을 사용할 수 있지만 루비 또는 레일과 그 작업을 수행하는 쉬운 방법이 있다면 난 그냥 궁금 해서요. 나는 루비 모듈 URI에서 아무것도 발견하지 않았습니다 그러나 아마 내가 뭔가를 놓쳤다.
사실, 나는 그렇게 할 것입니다 방법이 필요합니다 :
extract_parameters_from_url("http://www.example.com/something?param1=value1¶m2=value2¶m3=value3")
#=> {:param1 => 'value1', :param2 => 'value2', :param3 => 'value3'}
당신은 어떤 조언을 하시겠습니까?
해결법
-
==============================
1.난 당신이 HASH에 특정 URL 문자열을 켜려고 생각?
난 당신이 HASH에 특정 URL 문자열을 켜려고 생각?
당신은 http://www.ruby-doc.org/stdlib/libdoc/cgi/rdoc/classes/CGI.html#M000075 시도 할 수 있습니다
require 'cgi' CGI::parse('param1=value1¶m2=value2¶m3=value3')
보고
{"param1"=>["value1"], "param2"=>["value2"], "param3"=>["value3"]}
-
==============================
2.나는 나 자신이 최근 프로젝트에 대해 같은 일을 필요로 발견했다. 리바이스 솔루션을 구축, 여기에 깨끗하고 빠른 방법입니다 :
나는 나 자신이 최근 프로젝트에 대해 같은 일을 필요로 발견했다. 리바이스 솔루션을 구축, 여기에 깨끗하고 빠른 방법입니다 :
Rack::Utils.parse_nested_query 'param1=value1¶m2=value2¶m3=value3' # => {"param1"=>"value1", "param2"=>"value2", "param3"=>"value3"}
-
==============================
3.그냥 레위 대답 위의 개선 -
그냥 레위 대답 위의 개선 -
Rack::Utils.parse_query URI("http://example.com?par=hello&par2=bye").query
위의 URL을 같은 문자열의 경우, 반환
{ "par" => "hello", "par2" => "bye" }
-
==============================
4.순수 루비 솔루션의 경우 (이 경우에도 레일 / 랙 등이 필요하지 않은 경우 사용할 수 있습니다) CGI.parse와 URI.parse을 결합 :
순수 루비 솔루션의 경우 (이 경우에도 레일 / 랙 등이 필요하지 않은 경우 사용할 수 있습니다) CGI.parse와 URI.parse을 결합 :
CGI.parse(URI.parse(url).query) # => {"name1" => ["value1"], "name2" => ["value1", "value2", ...] }
-
==============================
5.이 문제를 해결하기 위해 하나 이상의 방법을. 다른 사람들은 당신에게 몇 가지 트릭을 보여 주었다. 나는 또 다른 트릭을 알고있다. 여기 내 시도는 다음과 같습니다 -
이 문제를 해결하기 위해 하나 이상의 방법을. 다른 사람들은 당신에게 몇 가지 트릭을 보여 주었다. 나는 또 다른 트릭을 알고있다. 여기 내 시도는 다음과 같습니다 -
require 'uri' url = "http://www.example.com/something?param1=value1¶m2=value2¶m3=value3" uri = URI(url) # => #<URI::HTTP:0x89e4898 URL:http://www.example.com/something?param1=value1¶m2=value2¶m3=value3> URI::decode_www_form(uri.query).to_h # if you are in 2.1 or later version of Ruby # => {"param1"=>"value1", "param2"=>"value2", "param3"=>"value3"} Hash[URI::decode_www_form(uri.query)] # if you are below 2.1 version of Ruby # => {"param1"=>"value1", "param2"=>"value2", "param3"=>"value3"}
의 :: decode_www_form 메소드 docomentation을 읽어보십시오.
-
==============================
6.주소 지정 보석 확인 - 쿼리를 쉽게 분석하게 루비의 URI 모듈에 대한 인기가 교체 :
주소 지정 보석 확인 - 쿼리를 쉽게 분석하게 루비의 URI 모듈에 대한 인기가 교체 :
require "addressable/uri" uri = Addressable::URI.parse("http://www.example.com/something?param1=value1¶m2=value2¶m3=value3") uri.query_values['param1'] => 'value1'
(또한 URI 명백하게 달리, 디코딩 / 인코딩 PARAM 처리)
-
==============================
7.당신의 컨트롤러에서는 PARAMS라는 사전 (해시)에 액세스 할 수 있어야합니다. [: PARAM1] 그래서 당신은 각 쿼리 매개 변수의 이름이 무엇인지 알고 있다면, 그럼 그냥 PARAMS 할 ... 액세스 그것에 당신이 매개 변수의 이름이 무엇인지 모르는 경우, 당신은 사전을 통과 얻을 수있는 키.
당신의 컨트롤러에서는 PARAMS라는 사전 (해시)에 액세스 할 수 있어야합니다. [: PARAM1] 그래서 당신은 각 쿼리 매개 변수의 이름이 무엇인지 알고 있다면, 그럼 그냥 PARAMS 할 ... 액세스 그것에 당신이 매개 변수의 이름이 무엇인지 모르는 경우, 당신은 사전을 통과 얻을 수있는 키.
여기에 몇 가지 간단한 예제.
from https://stackoverflow.com/questions/2500462/how-to-extract-url-parameters-from-a-url-with-ruby-or-rails by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 루비 번들 기호를 찾을 수 없습니다 : _SSLv2_client_method (LoadError) (0) | 2020.02.09 |
---|---|
[RUBY-ON-RAILS] 루비 온 레일 및 유증에 여러 사용자 모델은 별도의 등록 경로하지만 하나 개의 공통 로그인 경로가합니다 (0) | 2020.02.09 |
[RUBY-ON-RAILS] 어떻게 할 inverse_of합니까? SQL은 어떻게 생성합니까? (0) | 2020.02.09 |
[RUBY-ON-RAILS] 어떻게 루비 배열에서 평균을 만들려면 어떻게해야합니까? (0) | 2020.02.09 |
[RUBY-ON-RAILS] LINK_TO에 쿼리 문자열 매개 변수를 추가 (0) | 2020.02.09 |