2012-10-11 57 views
0

我正嘗試創建一個時間軸,併爲用戶輸入一個新事件。我決定使用http://timeline.verite.co/的時間線 - 我可以爲每個用戶創建一個表單,以輸入一個新事件,並將該事件保存到數據庫中沒有問題。然而,我很難弄清楚的是:Rails - 將數據庫中的數據轉換爲JSON

a)從數據庫獲取數據並將其轉換爲時間軸將會滿意的正確JSON格式 - 我不知道從哪裏開始!我是否需要使用與JSON屬性相同的名稱命名數據庫中的列「標題」?那麼我怎麼把它變成JSON?

b)如何即時生成JSON文檔?該代碼需要將數據鏈接到JSON文檔。

這是我能弄清楚如何做到這一點的唯一方法 - 就好像我要爲每個用戶生成一個JSON文檔並插入每個新事件,然後從中讀取,然後肯定存在一些安全問題JSON文檔比沒有它的人更容易下載,而不是數據庫中的數據?

任何幫助或指針將不勝感激 - 我是相當新的Rails,並沒有真正觸摸JSON呢!謝謝。

萬一有幫助,通過時間軸所需要的數據格式是這樣的:

{ 
    "timeline": 
    { 
     "headline":"The Main Timeline Headline Goes here", 
     "type":"default", 
     "text":"<p>Intro body text goes here, some HTML is ok</p>", 
     "asset": { 
      "media":"http://yourdomain_or_socialmedialink_goes_here.jpg", 
      "credit":"Credit Name Goes Here", 
      "caption":"Caption text goes here" 
     }, 
     "date": [ 
      { 
       "startDate":"2011,12,10", 
       "endDate":"2011,12,11", 
       "headline":"Headline Goes Here", 
       "text":"<p>Body text goes here, some HTML is OK</p>", 
       "tag":"This is Optional", 
       "asset": { 
        "media":"http://twitter.com/ArjunaSoriano/status/164181156147900416", 
        "thumbnail":"optional-32x32px.jpg", 
        "credit":"Credit Name Goes Here", 
        "caption":"Caption text goes here" 
       } 
      } 
     ], 
     "era": [ 
      { 
       "startDate":"2011,12,10", 
       "endDate":"2011,12,11", 
       "headline":"Headline Goes Here", 
       "text":"<p>Body text goes here, some HTML is OK</p>", 
       "tag":"This is Optional" 
      } 

     ] 
    } 
} 
+0

您可以使用'data_hash.to_json'輕鬆將Ruby Hash轉換爲JSON。如何將數據從數據庫轉換爲哈希是另一個問題,它很大程度上取決於您的數據庫結構以及您對Ruby和ActiveRecord的知識。 – khustochka

+0

好吧,我可以將數據作爲Ruby對象從數據庫中提取出來,然後將其轉換爲JSON?我將如何做到這一點,然後把它變成正確的格式?正如你可能知道的那樣,我對db內部工作的瞭解是相當有限的 - 我只創建了創建和讀取數據的應用程序,而不是以這種方式篡改數據。任何幫助都會很棒,但是恐怕你可能需要爲我拼寫一下!謝謝。 – ecs

+0

我同意** saverio **的回答,因爲JSON結構像你需要的那樣複雜,使用JSON模板而不是'to_json'好得多。 – khustochka

回答

2

使用#to_json是不是一個真正的選擇,太複雜。

嘗試在JBuilder中使用JSON模板(請參閱https://github.com/rails/jbuilder)。

甚至可以使用partials和cache,就像正常的ERB視圖一樣。

+0

這看起來就像我之後,謝謝你。但是,如何將生成的JSON傳遞到時間軸中,因爲它要求將JSON用作源數據的路徑?謝謝。 – ecs

+0

wiew將由您的服務器通過路由服務,類似於'http:// www.yourserver.com/timelines/42.json'應輸出對應於時間軸#42 – rewritten

+0

輝煌的JSON,謝謝!會放棄它。 – ecs

0

如果您將您的JSON對象轉換爲字符串,並存儲在數據庫中的BLOB類型,然後在檢索您可以使用

ActiveSupport::JSON.decode(VALUE) 

將字符串轉換爲JSON

0

嘗試使用Rabl。它可以讓你在你的rails應用程序中導出簡單和複雜的json結構。這非常容易設置。