Json w rails 3

W aplikacji chcę wykorzystać bibliotekę dojo. Teraz głównie skupiam się na dojo tree a ściślej mówiąc na dijit.Tree.

Biblioteka wymaga ta wykorzystania plików json w których zawarte są informacje o gałęziach drzewa. Wprawdzie znalazłem jakąś alternatywe jak przekonwertowac js do json, ale nie jestem pewien czy to zadziała no i czy to jest dobry pomysł. Dlatego nastawiam się na ten format json.

W rails 3 przy użyciu struktur danych Array i Hash mniej więcej utworzyłem strukturę pliku json, ale nie do końca struktura plików się zgadza.

Przykład pliku ze strony dojo

{ identifier: 'name', label: 'name', items: [... ]}
Mi natomiast railsy generują coś takiego:

{"identifier":"name","label":"name","items":[...]}

Czyli problem stanowią te cudzysłowy.

[code=ruby] list = Hash.new
list[‘identifier’] = ‘name’
list[‘label’] = ‘name’
list[‘items’] = Array.new
units.map { |u|
o = Hash.new
o[‘name’] = u.unit_translation[0].name
o[‘type’] = ‘unit’
if(unit[ids[u.id]].count > 0)
o[‘children’] = unit[ids[u.id]]
end
list[‘items’].push(o)
}

render :json => list[/code]

próbowałem jeszcze wpisać:

require 'json'

oraz

list = JSON.generate(list)

ale nie pomogło.

Rails generują jak najbardziej poprawny JSON, powinien bez problemu być akceptowany przez bibliotekę. Jak reaguje dojo? Na czym polega problem?

W normalnych warunkach, w tym przypadku, biblioteka generuje drzewko z wpisami. Przeprowadziłem taki test, że wstawiłem do skryptu w mojej aplikacji przykładowe dane (dostarczone przez dojo)

{ identifier: 'name', label: 'name', items: [ { name:'Africa', type:'continent', children:[{_reference:'Egypt'}, {_reference:'Kenya'}, {_reference:'Sudan'}] }, { name:'Egypt', type:'country' }, { name:'Kenya', type:'country', children:[{_reference:'Nairobi'}, {_reference:'Mombasa'}] }, { name:'Nairobi', type:'city' }, { name:'Mombasa', type:'city' }, { name:'Sudan', type:'country', children:{_reference:'Khartoum'} }, { name:'Khartoum', type:'city' }, { name:'Asia', type:'continent', children:[{_reference:'China'}, {_reference:'India'}, {_reference:'Russia'}, {_reference:'Mongolia'}] }, { name:'China', type:'country' }, { name:'India', type:'country' }, { name:'Russia', type:'country' }, { name:'Mongolia', type:'country' }, { name:'Australia', type:'continent', population:'21 million', children:{_reference:'Commonwealth of Australia'}}, { name:'Commonwealth of Australia', type:'country', population:'21 million'}, { name:'Europe', type:'continent', children:[{_reference:'Germany'}, {_reference:'France'}, {_reference:'Spain'}, {_reference:'Italy'}] }, { name:'Germany', type:'country' }, { name:'France', type:'country' }, { name:'Spain', type:'country' }, { name:'Italy', type:'country' }, { name:'North America', type:'continent', children:[{_reference:'Mexico'}, {_reference:'Canada'}, {_reference:'United States of America'}] }, { name:'Mexico', type:'country', population:'108 million', area:'1,972,550 sq km', children:[{_reference:'Mexico City'}, {_reference:'Guadalajara'}] }, { name:'Mexico City', type:'city', population:'19 million', timezone:'-6 UTC'}, { name:'Guadalajara', type:'city', population:'4 million', timezone:'-6 UTC' }, { name:'Canada', type:'country', population:'33 million', area:'9,984,670 sq km', children:[{_reference:'Ottawa'}, {_reference:'Toronto'}] }, { name:'Ottawa', type:'city', population:'0.9 million', timezone:'-5 UTC'}, { name:'Toronto', type:'city', population:'2.5 million', timezone:'-5 UTC' }, { name:'United States of America', type:'country' }, { name:'South America', type:'continent', children:[{_reference:'Brazil'}, {_reference:'Argentina'}] }, { name:'Brazil', type:'country', population:'186 million' }, { name:'Argentina', type:'country', population:'40 million' } ]}
Następnie w jednym miejscu zmieniłem napis

name

na

"name"

no i skrypt się wysypał tzn. nie pokazał żadnego wpisu, więc coś jednak jest nie tak z tymi cudzysłowami.

EDIT

Tymczasowo rozwiązałem to poprzez generowanie stringów, ale to jest tylko rozwiązanie, żeby określona funkcjonalność działała. Mimo to chciałbym to wykonać tak, żeby generowanie pliku JSON działało poprawnie (poprawnie w rozumieniu biblioteki dojo)

w projekcie na Railsach 2ce miałem kiedyś coś takiego

data = {:status => status, :fb => costam, :flash => costam_innego} render :json => data.to_json
i robiło. Niczego nie includowałem dodatkowo