我有一个数组数组,当我遍历数组时,显示的唯一数组是最后一个数组。
这是遍历数组的代码;
@events.each do |event|
def get_sig_class_id(sig_id)
IpsSignature.where('sig_id =?', sig_id).first.sig_class_id
end
sig_id = get_sig_class_id(event.signature)
event_class_data.push(sig_id)
@event_class_array = Array.new(event_class_data.group_by {|x| x}.map {|k,v| [k,v.count]})
@event_class_array.each do |x|
@event_class = x
end
end
如果我在观看中显示@event_class_array
,我会收到[[1, 54], [30, 1], [2, 1]]
如果我在视图中显示@event_class
,我只会获得[2, 1]
我希望[1, 54], [30, 1], [2, 1]
获得@event_class
(单个数组,而不是@event_class_array
中的数组数组,而不仅仅是最后一个数组。)
我在视图中显示的只是查看我返回的数据,最终会以Highcharts饼图结束。
以下是我的观点,这里没什么可看的..
<%= @event_class_array %>
和
<%= @event_class %>
答案 0 :(得分:2)
@event_class_array.each do |x|
@event_class = x
end
此代码表示对于每个数组,@ event_class都会重写为x。所以只有最后一个存储在那里。
如果要插入所有应该执行的数组
@event_class = []
@event_class_array.each do |x|
@event_class << x
end
答案 1 :(得分:0)
@event_class_array.each do |x|
@event_class = x
end
每次该行触发时,你都会覆盖@event_class。将其更改为
@event_class_array.each do |x|
@event_class += x
end
你应该做得好。