Ruby + JSON + Regexp - PullRequest
       3

Ruby + JSON + Regexp

0 голосов
/ 13 августа 2010

Я работаю над проектом RoR и передаю объект JSON в сценарий.В частности, список событий в календаре jquery.

Сначала я получаю необходимые события из активной записи и преобразую их в json:

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

Это возвращает следующее:

[{"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"}},
 ...]

Однако я сталкиваюсь с проблемами, поскольку сценарий ожидает следующий формат:

[{"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"},
 ...]

Сначала я подумал, что будет просто получить значения из отдельных хешей, ивозвращая массив, заполненный теми.Тем не менее, кажется, что все в массиве является одной большой строкой.Поэтому я пытался получить необходимые вещи с помощью регулярного выражения.Мой лучший выстрел был:

@json = @events.scan(/\[\{\"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\"}},..."]]

Любая помощь будет оценена.

1 Ответ

2 голосов
/ 13 августа 2010
ActiveRecord::Base.include_root_in_json = false

Веселись

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...