2012-11-18 58 views
1

乾杯!請幫我解決這個問題 - 我有餅乾,這是哈希:散列哈希散列,Itunes心願列表

> cookies.keys 
=> [:wishlist] 

然後:

> cookies[:wishlist].keys 
=> ["result_count", "results"] 

結果是HASHIE數組::皮疹

> cookies[:wishlist].results[0].keys 
=> ["wrapper_type", "kind", "artist_id", ...] 

cookies是哈希,cookies [:wishlist]是Hashie :: Rash,結果是一個包含其他Hashie :: Rash'ies的數組。 問題是如何在不刪除舊數據的情況下向願望清單添加新數據(例如,添加願望清單)?

+0

我想使用cookie .as_json.merge,它似乎工作。 – xamenrax

+0

它很無奈 – xamenrax

回答

2

假設你有這樣的結構:

cookies = { 
    :wishlist => Hashie::Rash.new({ 
    'resultCount' => 2, 
    'results' => [ 
     Hashie::Rash.new({ 
     'wrapperType' => 'foo1', 
     'kind'  => 'bar1', 
     'artistId' => 'baz1' 
     }), 
     Hashie::Rash.new({ 
     'wrapperType' => 'foo2', 
     'kind'  => 'bar2', 
     'artistId' => 'baz2' 
     }) 
    ] 
    }) 
} 

您可以簡單地使用Array#push新項目添加到您的results

require 'rash' 

new_wishlist_item = Hashie::Rash.new({ 
    'wrapperType' => 'foo3', 
    'kind'  => 'bar3', 
    'artistId' => 'baz3' 
}) 

cookies[:wishlist].results.push(new_wishlist_item) 
cookies[:wishlist].result_count = results.count 

cookies[:wishlist].results.each do |r| 
    puts r.wrapper_type 
end 

輸出:

foo1 
foo2 
foo3 
+0

它的工作原理!謝謝,但如果我有空的ActionDispatch :: Cookies :: CookieJar(願望清單中沒有任何項目)呢?任何提示如何在Rails的控制器中實現它?像保存動作一樣。 – xamenrax

+0

看到我的編輯,你也應該更新'result_count' –

+0

你如何正常創建你的願望清單? –