2013-03-12 72 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

相關問題