2010-08-13 30 views
0

我正在處理RoR項目,並將JSON對象傳遞給腳本。具體來說,一個jQuery日曆的事件列表。Ruby + JSON + Regexp

首先我從活動記錄必要的事件,並將其轉換成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\"}},..."]] 

任何幫助,將不勝感激。

回答

2
ActiveRecord::Base.include_root_in_json = false 

玩得開心。

Reading documentation helps.

+0

謝謝。我希望在幾個小時前發現它。 – Phillip 2010-08-13 19:16:19

+0

RTFM的經典例子,讓我發笑;好的建議和很好的答案! – Luceos 2013-05-02 13:58:36