Я пытаюсь добавить хэши в массив, повторяя каждый цикл.Вот мой код контроллера: строка, с которой я борюсь, устанавливает переменную @royaltiesbychannel в каждом цикле:
def royalty(isbn)
sales_hash_by_channel = Sale.find_all_by_isbn_id(@isbn).group_by(&:channel_id)
sales_hash_by_channel.each do |ch_id, sale_array|
@royaltiesbychannel = Array.new()
value_total_by_channel = sale_array.sum(&:value)
quantity_total_by_channel = sale_array.sum(&:quantity)
@isbn.rules.each do |rule|
next unless rule.channel_id == ch_id
case quantity_total_by_channel
when 0..5000
@royaltiesbychannel = @royaltiesbychannel << {ch_id => value_total_by_channel * 0.5}
# (some other case-when statements)
end
end
end
В консоли, когда я устанавливаю ch_id и значение на что-то новое и нажимаюновые значения в массиве:
@royaltiesbychannel = @royaltiesbychannel << {ch_id => value_total_by_channel * 0.5}
Я получаю хороший массив хэшей:
[{1=>100000.0}, {2=>3000.0}]
Однако, когда я делаю @ royaltiesbychannel.inspect в представлении, я получаю только один ключпара-значение:
[{2=>3000.0}]
Для ссылки:
@royaltiesbychannel.class = Array
@royaltiesbychannel.class = 1
@sales_hash_by_channel.class = Hash
@sales_hash_by_channel.size = 2
@isbn.rules.size = 4
Таким образом, похоже, что толчок в массив перезаписывает, а не добавляет.Что я делаю неправильно?Я полностью упустил момент о том, как работают циклы и .push?Спасибо заранее.