2013-05-08 15 views
18

Ich habe einen Controller, der ein Array von ActiveRecord-Objekten und eine Jbuilder-Ansicht zum Generieren der JSON (alle Standard-Zeug) zurückgibt. funktioniert gut, wenn ich zum Beispiel eine Reihe von Hashes möchte.rails jbuilder - nur ein Array von Strings

so zum Beispiel ich habe:

json.array!(@list) do |l| 
    json.(l, :field) 
end 

die zurück

[ 
    { "field": "one" }, 
    { "field": "two" }, 
    { "field": "three" } 
] 

aber ich möchte nur ein Array von Strings; so dass mein JSON ist

[ 
    "one", 
    "two", 
    "three" 
] 

was soll meine Jbuilder-Datei sein?

Antwort

40

Ein bisschen spät, aber dies funktioniert:

json.array! @list 

Aber halten es in einem Block zu verwenden, um ein JSON Paar zu erstellen:

json.data do 
    json.array! @list 
end 

# => { "data" : [ "item1", "item2", "item3" ] } 
+0

danke für die antwort: ich bekomme ein 'nil ist kein symbol' fehler bei der versuchung entweder vorschlag. Aber wenn ich 'json.array! @devices do | d | json.i d.device end', es funktioniert (aber ich habe ein Array von Anon-Hashes mit einzelnen Schlüssel 'ich' dann) – yee379

+3

Versuchen Sie einfach, ein Array von Strings wie '@devices.collect {| d | zu erstellen d.device} 'und benutze dieses Array um den JSON zu erstellen. – irmakcanozsut

+0

duh! dumm mich .. natürlich muss ich 'sammeln'! Vielen Dank! – yee379

4

Wenn Sie Array als Wert für einige Schlüssel wollen , das wird funktionieren:

json.some_key [1, 3, 4] 
Verwandte Themen