반응형
Ruby on Rails에서 쿼리 문자열 인 것처럼 문자열 구문 분석
다음과 같은 문자열이 있습니다.
"foo=bar&bar=foo&hello=hi"
Ruby on Rails는 이것을 쿼리 문자열 인 것처럼 구문 분석하는 메서드를 제공하므로 다음과 같은 해시를 얻습니다.
{
:foo => "bar",
:bar => "foo",
:hello => "hi"
}
아니면 직접 써야하나요?
편집하다
위의 문자열은 URL의 실제 쿼리 문자열이 아니라 Facebook Connect의 쿠키에 저장된 문자열입니다.
답은 사용중인 Rails 버전에 따라 다릅니다. 2.3 이상을 사용하는 경우 Params에 랙의 내장 파서를 사용하십시오.
Rack::Utils.parse_nested_query("a=2") #=> {"a" => "2"}
이전 Rails를 사용하는 경우 실제로 CGI::parse
. 해시 및 배열 처리는 모듈간에 미묘한 방식으로 다르므로 가져 오는 데이터가 선택한 방법에 맞는지 확인해야합니다.
Rack::Utils
속기 액세스를 위해 클래스에 포함 할 수도 있습니다.
그만큼
CGI::parse("foo=bar&bar=foo&hello=hi")
당신에게 준다
{"foo"=>["bar"], "hello"=>["hi"], "bar"=>["foo"]}
편집 : 주석에서 말했듯이, 누군가가 당신을 해치고 싶다면 symolizing 키는 서버를 다운시킬 수 있습니다. 저 프로필 앱에서 작업 할 때는 작업이 더 쉬워지기 때문에 여전히 많이합니다.하지만 높은 지분 앱에서는 더 이상하지 않을 것입니다.
원하는 결과를 얻기 위해 키를 상징하는 것을 잊지 마십시오
Rack::Utils.parse_nested_query("a=2&b=tralalala").deep_symbolize_keys
이 작업은 중복에 대해 파괴적입니다.
매개 변수에 대한 데이터를 가져 오는 데 사용되는 URL에 대해 이야기하는 경우
> request.url
=> "http://localhost:3000/restaurants/lokesh-dhaba?data=some&more=thisIsMore"
그런 다음 쿼리 매개 변수를 가져옵니다. 사용하다
> request.query_parameters
=> {"data"=>"some", "more"=>"thisIsMore"}
해시를 원한다면 사용할 수 있습니다.
Hash[CGI::parse(x).map{|k,v| [k, v.first]}]
반응형
'Program Tip' 카테고리의 다른 글
DateTime으로 최신 시간을 어떻게 지정할 수 있습니까? (0) | 2020.11.06 |
---|---|
char 배열을 비우는 방법? (0) | 2020.11.06 |
파이썬에서 문자열을 제목 대소 문자로 변환하는 방법은 무엇입니까? (0) | 2020.11.06 |
Python으로 Google 스프레드 시트에 액세스 (읽기, 쓰기)하려면 어떻게하나요? (0) | 2020.11.06 |
li의 두 번째 줄은 CSS 재설정 후 글 머리 기호 아래에서 시작합니다. (0) | 2020.11.06 |