2015-11-21 98 views
0

我有這個json數據,我想找到..如果'id'可用,那麼更新記錄不是。如何更新軌道中的數據

// Here is my json 

{ 
    "service": 
    [ { 
     "id":4, 
     "name": "1", 
     "description": "Allkindofworks", 
     "price": "200" 
    }, 
    { 
     "id":4, 
     "name": "1", 
     "description": "Allkindofworks", 
     "price": "200" 
    }] 
} 
+2

請再次檢查您的問題,我不明白你想在這裏? –

+0

我想更新我的表中的這個json數據 –

+0

您在從JSON獲取「id」時面臨什麼問題? –

回答

0

如果我理解你的問題,你會得到一些JSON數據,然後你要更新的id場,如果你能找到它,否則離開單幹。只需使用json將您的JSON轉換爲Hash(我假定您將其作爲字符串獲取),如果找到該字段,請更改該字段,然後再將其更改回JSON。

它會看起來有點像這樣:

require 'json' 

my_json_string = '{...}' 

parsed = JSON.parse(my_json_string) 
parsed['services'].each do |element| 
    if element.has_key?('id') 
    # do something 
    end 
end 

# Finally, convert back to JSON 
my_json_string = parsed.to_json 
+0

這裏是我的代碼 當我寫這段代碼時...它給內部服務器錯誤 //我的更新代碼 def update Result = params [:service] .to_hash Result [:service] .each do | S | Service.find_by_id(s [:id])。try(:update_attributes,{name:s [:name]}) end // url localhost:4000/services/bulk_update // routes get'services/bulk_update'= >「服務#更新」 –

2

這應該工作,先將其轉換爲一個哈希,

result = { 
    "service": 
    [ { 
     "id":4, 
     "name": "1", 
     "description": "Allkindofworks", 
     "price": "200" 
    }, 
    { 
     "id":4, 
     "name": "1", 
     "description": "Allkindofworks", 
     "price": "200" 
    }] 
}.to_hash 

然後,您可以遍歷和更新使用find_by_id和嘗試方法

result[:service].each do |s| 
Model.find_by_id(s[:id]).try(:update_attributes, {name: s[:name]}) 
end 

注:原因我們用find_by_id是爲了防止記錄不缶nd異常,如果沒有找到給定ID的記錄,它將返回nil。而try方法也只是嘗試運行,如果發生任何問題,它不會拋出任何錯誤。

+0

當我寫這篇代碼......這是給內部服務器錯誤 //我的更新代碼 DEF更新 結果=參數[:服務] .to_hash 結果[:服務。每個都做| s | Service.find_by_id(S [:ID])。嘗試(:update_attributes方法,{名稱:S [:名稱]}) 端 // URL HTTP://本地主機:4000 /服務/ bulk_update //路線 得到 '服務/ bulk_update'=> '服務#更新' –

+0

// Json的paramenter { 「服務」: [{ 「ID」:4, 「名」: 「1」, 「description」:「Allkindofworks」, 「price」:「200」 }, { 「身份證」:4, 「名」: 「1」, 「說明」: 「Allkindofworks」, 「價格」: 「200」 }] } 現在告訴在那裏我錯了 –

+0

什麼確切錯誤,你可以發佈你的代碼。 –