代码之家  ›  专栏  ›  技术社区  ›  user2517182

Ruby将哈希推送到一个不带花括号的数组中

  •  1
  • user2517182  · 技术社区  · 10 年前

    我正在尝试创建一个用于函数调用的参数列表。

    函数调用如下所示:

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

    我尝试了以下方法:

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

    希望使用splat运算符( * )填充参数列表。但是,参数如下所示:

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

    希望使用splat运算符( * )填充参数列表。但是,参数如下所示:

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

    任何帮助都将不胜感激。

    2 回复  |  直到 10 年前
        1
  •  2
  •   spickermann    10 年前

    您的方法需要哈希(而不是哈希数组)。因此,您必须使用散列来构建参数:

    parameters = { :key1 => value1 }
    parameters[:key2] = value2
    
    somefunction parameters
    
        2
  •  0
  •   Oleksandr Holubenko    10 年前

    首先想到的是:

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