Arrays Ruby将散列放入一个没有花括号的数组中
我正在尝试创建一个参数列表,以便在函数调用中使用 函数调用如下所示:Arrays Ruby将散列放入一个没有花括号的数组中,arrays,ruby,append,splat,Arrays,Ruby,Append,Splat,我正在尝试创建一个参数列表,以便在函数调用中使用 函数调用如下所示: 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} p
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}}]
我尝试了以下方法:
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}}]
希望使用splat运算符(*
)填充参数列表。但是,参数如下所示:
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}}]
任何帮助都将不胜感激
编辑
我更新了示例代码以添加更多上下文
函数调用如下所示:
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}}]
我尝试了以下方法:
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}}]
希望使用splat运算符(*
)填充参数列表。但是,参数如下所示:
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}}]
任何帮助都将不胜感激。首先想到的是:
[{key1: value1},{key2: value2}].inject(:merge)
#=> {key1: value1, key2: value2}
您的方法需要一个散列(而不是散列数组)。因此,您必须使用哈希来构建参数:
parameters = { :key1 => value1 }
parameters[:key2] = value2
somefunction parameters
谢谢我试过了,但是参数的结果是
{key1:value1,key2:value2}
。我需要key1:value1,key2:value2
@user2517182:“key1:value1,key2:value2”不是对象。您需要学习区分简化语法和语法将产生的实际内容。根据方法的实现方式,它接受一个哈希或关键字参数。您可以使用散列来调用这两个变量。@user2517182:看到您的编辑,这个答案正是您需要的。你甚至都没试过,我就是这么想的。我已经做过很多次了。但是,当我使用{key1:value1,key2:value2}调用render函数时,出现了一个语法错误语法错误,意外的“:”,应为“}”
@SergioTulentsev,我确实尝试过它。这就是我编写编辑的原因。您可以在/output中包含所需的,在本例中是您希望执行的代码(我怀疑render*params
)。会使你的问题(对我)更清楚。