1

乾杯!問題を解決するのを手伝ってください - 私はハッシュのクッキーを持っています:

> cookies.keys
=> [:wishlist]

それで:

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

results は Hashie::rash の配列です

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

cookies はハッシュ、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 に答える