2012-02-02 55 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