/ / Ruby schiebt einen Hash in ein Array ohne geschweifte Klammern - Arrays, Ruby, Append, Splat

Ruby schiebt einen Hash in ein Array ohne geschweifte Klammern - Arrays, Ruby, Anhängen, Splat

Ich versuche, eine Parameterliste zur Verwendung in einem Funktionsaufruf zu erstellen.

Der Funktionsaufruf sieht folgendermaßen aus:

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

Ich habe Folgendes versucht:

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

In der Hoffnung, den splat-Operator zu verwenden (*), um die Parameterliste zu füllen. Params sieht jedoch so aus:

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

Jede Hilfe würde sehr geschätzt werden.

Ich habe den Beispielcode aktualisiert, um mehr Kontext hinzuzufügen.

Der Funktionsaufruf sieht folgendermaßen aus:

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

Ich habe Folgendes versucht:

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

In der Hoffnung, den splat-Operator zu verwenden (*), um die Parameterliste zu füllen. Params sieht jedoch so aus:

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

Jede Hilfe würde sehr geschätzt werden.

Antworten:

2 für die Antwort № 1

Ihre Methode erwartet einen Hash (kein Array von Hashes). Daher müssen Sie einen Hash verwenden, um Ihre Parameter zu erstellen:

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

somefunction parameters

0 für die Antwort № 2

Zuerst was mir einfällt:

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