2016-09-16 8 views
1

함수 호출에 사용할 매개 변수 목록을 만들려고합니다.루비는 중괄호가없는 배열에 해시를 푸시합니다.

함수 호출은 다음과 같습니다 :

render json: @flight, meta: {url: Flight.encrypt(@flight.id.to_s)} 

나는 다음과 같은 시도 : 매개 변수 목록을 채우는 플랫 연산자 ( *)를 사용하여 희망

params = [key1: value1] 
params.push(key2: value2) 

. 그러나 매개 변수는 다음과 같습니다.

[{key1: value1},{key2: value2}] 

모든 도움을 주시면 감사하겠습니다.

편집

더 많은 컨텍스트를 추가하기 위해 예제 코드를 업데이트했습니다.

함수 호출은 다음과 같습니다 :

render json: some_json_value, meta: {some_key: some_value} 

나는 다음과 같은 시도 : 매개 변수 목록을 채우는 플랫 연산자 ( *)를 사용하여 희망

params = [json: @some_json_value] 
params.push(meta: {some_key: some_value}) 

. 그러나 매개 변수는 다음과 같습니다.

[{json: @some_json_value},{meta: {some_key: some_value}}] 

모든 도움을 주시면 감사하겠습니다.

+0

'원하는 입력/출력'을 포함 할 수 있습니다.이 경우 실행하려는 코드 ('render * params'로 의심됩니다). 귀하의 질문을 (나에게) 명확하게 해 줄 수있을 것입니다. – Felix

답변

2

당신의 방법은 해시 (안 해시의 배열을) 기대하고있다. 따라서 해시를 사용하여 매개 변수를 빌드해야합니다.

+0

감사합니다. 나는 그것을 시도했지만 매개 변수에 대한 결과는'{key1 : value1, key2 : value2}'입니다. 'key1 : value1, key2 : value2'가 필요합니다. – user2517182

+1

@ user2517182 : "key1 : value1, key2 : value2"는 개체가 아닙니다. 단순화 된 구문과 구문이 생성하는 실제 구문을 구별하는 방법을 배워야합니다. 메소드가 구현되는 방식에 따라 해시 또는 키워드 인수를 하나씩 허용합니다. 해시를 사용하여 두 변종을 모두 호출 할 수 있습니다. –

+0

@ user2517182 : 편집을보고,이 답변은 꼭 필요한 것입니다. 너는 그것을 시도조차하지 않았다. –

0

먼저 마음에 무엇을 제공 :

[{key1: value1},{key2: value2}].inject(:merge) 
#=> {key1: value1, key2: value2}