2010-08-13 7 views
0

Je travaille sur un projet RoR et je passe un objet JSON à un script. Plus précisément, une liste d'événements à un calendrier jquery.Ruby + JSON + Regexp

D'abord je reçois les événements nécessaires de dossier actif et de les convertir en JSON:

@events = CalendarEvent.find(:all, :conditions => ["mentor_id = ?", current_user]).to_json(:only => [:id, :availability, :starts_at, :ends_at]) 

Cela renvoie les éléments suivants:

[{"calendar_event":{"starts_at":"2010-08-14T17:15:00Z","id":1,"availability":true,"ends_at":"2010-08-14T17:45:00Z"}}, 
{"calendar_event":{"starts_at":"2010-08-15T15:45:00Z","id":2,"availability":true,"ends_at":"2010-08-15T16:15:00Z"}}, 
...] 

Cependant, je me présente des problèmes parce que le script attend le format suivant:

[{"starts_at":"2010-08-14T17:15:00Z","id":1,"availability":true,"ends_at":"2010-08-14T17:45:00Z"}, 
{"starts_at":"2010-08-15T15:45:00Z","id":2,"availability":true,"ends_at":"2010-08-15T16:15:00Z"}, 
...] 

Au début, je pensais que ce serait un simple question de sauter les valeurs des hachages distincts, et de retourner un tableau rempli de ceux-ci. Cependant, il semble que tout dans le tableau est une grande chaîne. Donc j'essayais d'obtenir les choses nécessaires en utilisant une expression régulière. Mon meilleur tir était:

@json = @events.scan(/\[\{\"calendar_event\":(\{.*\})\}\]*/) 

Mais cela renvoie quelque chose de la forme:

[["{\"starts_at\":\"2010-08-14T17:15:00Z\",\"id\":1,\"availability\":true,\"ends_at\":\"2010-08-14T17:45:00Z\"}},{\"calendar_event\":{\"starts_at\":\"2010-08-15T15:45:00Z\",\"id\":2,\"availability\":true,\"ends_at\":\"2010-08-15T16:15:00Z\"}},..."]] 

Toute aide serait appréciée.

Répondre

2
ActiveRecord::Base.include_root_in_json = false 

Amusez-vous.

Reading documentation helps.

+0

Merci. J'aurais aimé avoir trouvé ça il y a quelques heures. – Phillip

+0

exemple classique de RTFM qui m'a fait rire; bon conseil et bonne réponse! – Luceos