2016-09-16 43 views
1

我想創建一個參數列表以供在函數調用中使用。Ruby將哈希按入大括號中的數組

函數調用如下所示:

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

我試過如下:

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

在使用圖示符(*)來填充參數列表的希望。然而,params看起來像下面這樣:

[{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}) 

在使用圖示符(*)來填充參數列表的希望。但是,params看起來像下面這樣:

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

任何幫助將不勝感激。

+0

你可以包含'desired in/output',在這種情況下你想要執行的代碼(我懷疑'render * params')。會讓你的問題更清楚(對我來說)。 – Felix

回答

2

你方法需要一個散列(哈希不是一個數組)。因此,你必須使用散列來建立你的參數:

parameters = { :key1 => value1 } 
parameters[:key2] = value2 

somefunction parameters 
+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}