2016-09-16 40 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}