2013-05-08 15 views
18

Mam kontroler, który zwraca tablicę obiektów ActiveRecord i widok jbuildera, aby wygenerować json (wszystkie standardowe elementy). działa świetnie, jeśli chcę na przykład tablicy skrótów.rails jbuilder - tylko tablica łańcuchów znaków

tak na przykład mam:

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

która zwraca

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

Jednakże chcę tylko tablicę ciągów; tak, że mój json to

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

jaki powinien być mój plik jBurera?

Odpowiedz

40

Trochę późno, ale to będzie działać:

json.array! @list 

ale uważają go używać w bloku, aby utworzyć parę JSON:

json.data do 
    json.array! @list 
end 

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

dzięki za odpowiedź: otrzymuję błąd "zero nie jest symbolem" podczas próby jakiejkolwiek sugestii. jednak gdy wykonuję 'json.array! @devices do | d | json.i d.device end', działa (jednak mam tablicę skrótów anon z jednym kluczem "i") – yee379

+3

Po prostu spróbuj utworzyć tablicę ciągów takich jak '@devices.collect {| d | d.device} 'i użyj tej tablicy, aby utworzyć json. – irmakcanozsut

+0

duh! Głupi mnie ... oczywiście potrzebuję "zbierać"! dzięki! – yee379

4

Jeśli chcesz Array jako wartość jakiegoś klucza , to zadziała:

json.some_key [1, 3, 4] 
Powiązane problemy