2011-07-06 2 views
0

나는이 방법을 여기에 만들었다.Ruby on Rails : URL 매개 변수의 매개 변수로 해시 전달 ... 대괄호를 제거하려면 어떻게해야합니까?

def get_api_xml_from_url(url, params = {}, api_key = SharedTest.user_api_key) 
    response = get(url, params, :format => "xml", :api_key => api_key) 
    assert_response :success 

    response_xml_hash = CobraVsMongoose.xml_to_hash(response.body) 

    return response_xml_hash, response 
end 

그러나 문제는 params가 GET() 호출을 끝내고 있다는 것이다. 나는를 추측하는 입니다. 왜냐하면 url은 get(url, {param, praam param}, format, etc)를 원하지 않기 때문입니다.

오히려 원하는 것은 get(url, param, param, param, format, etc)입니다.

params 변수에서 대괄호를 제거하려면 어떻게합니까? params가 보내지 지 않을 때, 아무것도 파손되지 않도록합니다. = \

답변

1

그래서 : format과 : api_key는 어떤 경우 에든 get 호출에 전달할 기본 매개 변수입니다. 맞습니까?

처음에는 get_api_xml_from_url 메소드에 전달 된 것과 기본값을 병합 할 수 있습니다.

get(url, params.merge(:format => "xml", :api_key => api_key) 

UPDATE : 여기 일이 뭐죠에 조금 더 설명. get은 url과 hash라는 두 개의 인수를 취합니다. 중괄호없이 해시를 작성할 수 있다는 것은 루비의 통사론에 불과합니다. 두 번째 단계에서는 마지막 매개 변수가 모두 키/값 쌍이며 함수에 하나의 해시로 모두 전달됩니다.

당신이 한 것은 3 가지 인수를 전달하는 것이 었습니다. url, params 해시 (중괄호로 묶인) 및 마지막으로 나머지 키/값 쌍.

관련 문제