2012-02-02 36 views
1

我有這樣的JSON對象(我真的不知道里面是什麼)發送的openstruct,我想這與openstruct屬性存儲到一個軌道模型的Rails:創建JSON通過AJAX

所以jQuery的例子我把這個JSON發送給好的url:

Data = A_JSON_OBJECT_LIKE_CSV; 
    myJSONData = {"OpenStructObject":{"content":' + Data + '}} 
    $.ajax({ 
     type: "POST", 
     url: 'http://localhost:3000/surveys/', 
     dataType: 'json', 
     data: myJSONData, 
     success: alert('wow : success !') 
    });     

那麼這個Survey模型應該怎麼寫呢? 也許是這樣的:

class Survey < ActiveRecord::Base 
    serialize :content, OpenStruct 

    def initialize(idunno) 
    @content = watever; 
    end 
end 

我真的不知道,只是它必須能夠做到這一點!

回答

1

爲什麼你需要將它轉換成OpenStruct並保存爲db中的yaml。相反,JSON轉換爲哈希保存爲yaml做同樣的事情沒有開放結構的開銷。

============================已更新[開始]

你已經在你的代碼的解決方案。看看這個

class Survey < ActiveRecord::Base 
    serialize :content, Hash 

end 

在這裏,你是序列化的內容。對!!所以它會在保存之前自動將分配的散列轉換爲yaml。因此,這裏是一些分配

survey = Survey.new({:content => {:first => "any hash"}}) 
survey.save! 

現在,當你回來

survey.content 
#=> {:first => "any hash"} 

只是簡單的,因爲它是訪問它。您不必擔心yaml轉換並返回,Rails會照顧它。

============================ UPDATED [END]

+0

是的,你有一個點,但如何查詢我的yaml文件,如何使它屬於一個profil例如? – Timoun 2012-02-02 13:07:17

+0

更新了答案。 – ducktyped 2012-02-02 15:46:53