2013-03-12 68 views
2

我从knockout.js歌厅JSON对象与ko.toJSON红宝石(西纳特拉)JSON.parse不JSON数据工作

self.cmaterials = ko.observableArray([]); 

....

ko.computed(function() { 
    $.ajax({ 
     url: "/editcmat1", 
     type: "PUT", 
     data: ko.toJSON(
      self.cmaterials 
     ) 
    }); 
}); 

Ruby代码

puts params 

{ “ID”:34, “名称”: “混凝土”, “material_id”:3}

,当我尝试将其转换

puts JSON.parse(js) 

类型错误 - 不能哈希转换成字符串:

我怎样才能使它可用红宝石哈希值。

puts parse.keys 
    {"id":34,"name":"Concrete","material_id":3} 
+0

我不完全得到的问题,'params'已经是一个'Hash' – fmendez 2013-03-12 22:22:16

+0

如果你'params.class'您能得到什么? – fmendez 2013-03-13 19:09:21

+0

是ruby表示为散列,但'params.keys'返回整个参数,因为它是一个键。 – audrius 2013-03-13 19:19:11

回答

0

做你试图用你的代码,这样做,你会怎么做:

puts JSON.parse(js).to_s 

使用JSON.parse方法使得可用的哈希值。您正尝试使用puts输出该散列,这意味着您必须将其转换为字符串。如果您要访问的散列,只是做:

hash = JSON.parse(js) 
puts hash["id"] #34 
puts hash["name"] #concrete 
etc... 
+0

hash = JSON.parse(js)给出相同的错误 – audrius 2013-03-14 07:09:00