7
Sinatra에서 매개 변수를 사용하여 URL 쿼리 문자열을 통해 전달 된 키/값을 가져 왔습니다. 값을 얻기 위해 문자열이나 기호를 키로 사용할 수 있다는 것을 알았습니다. 그래서 URL 인 경우 : 다음기호를 사용하여 Sinatra 매개 변수에 액세스하려면 어떻게해야합니까?
http://localhost:4567/x?a=1&b=2
:
params[:a] # => "1"
params["a"] # => "1"
params.to_s # => '{"name"=>"x", "a"=>"1", "b"=>"2"}'
params.class # => Hash
내가 PARAMS 말할 수는 해시이다. 그러나 이것은 해시의 일반적인 행동으로 보이지 않습니다.
h = {"a" => "1", "b" => "2"}
h["a"] # => "1"
h[:a] # => nil
누군가가 시나트라를 통해 어떻게 달성되는지 설명해주십시오.
루비에서는 이것이 가능한지 모르겠지만 해쉬 액세스 방법 ('[]')을 오버라이드 할 수 있다면이 메소드가 모든 것을 복제하는 것이 아니라 심볼을 문자열로 변환하는 것을 허용하는 것이 좋지 않을까요? 쌍? 그것이주는 이점에 대해 상대적으로 비싼 디자인 선택처럼 보입니다. – MarioDS
[현재 구현] (https://github.com/sinatra/sinatra/blob/6ce8a94005397695f0fd2cc241cd09fb325dd567/lib/sinatra/base.rb#L1060-L1062)은 훨씬 가벼워졌습니다 :'Hash.new {| hash, key | 해시 [key.to_s] 만약 심볼 === 키}', 즉 키가 심볼이면, 문자열 버전의 키로 시도하십시오. –