2012-11-18 54 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

你如何正常创建你的愿望清单? –