1

干杯! 请帮我解决问题 - 我有一个 cookie,它是哈希:

> cookies.keys
=> [:wishlist]

然后:

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

results 是一个 Hashie::rash 数组

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

cookies 是 hash,cookies[:wishlist] 是 Hashie::Rash,results 是一个数组,其中包含其他 Hashie::Rash'ies。问题是如何在不删除旧数据的情况下将新数据添加到愿望清单(例如,将曲目添加到愿望清单)?

4

1 回答 1

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
于 2012-11-18T10:37:23.977 回答