2010-08-13 2 views
0

RoR 프로젝트에서 작업 중이며 스크립트에 JSON 객체를 전달하고 있습니다. 특히 jquery 달력에 대한 이벤트 목록입니다.Ruby + JSON + Regexp

먼저 내가 활성 기록에서 필요한 이벤트를 얻고 JSON으로 변환 : 스크립트가 기대하고 있기 때문에이 문제가 실행하고, 그러나

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

:

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

이 다음을 반환 다음 형식 :

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

합니다.

답변

2
ActiveRecord::Base.include_root_in_json = false 

재미있게 보내십시오.

Reading documentation helps.

+0

감사합니다. 나는 이것을 몇 시간 전에 발견했으면 좋겠다. – Phillip

+0

나를 웃게 만든 RTFM의 고전적인 예; 좋은 조언과 훌륭한 답변! – Luceos