2012-12-08 75 views
0

我有這樣的代碼:添加到類值在Ruby on Rails的數據在環

def accum_search 

    if params[:akbcap].present? 
     akbcap_array = [12,18,19,20,25,30,35,36,38,40,41,42,44,45,46,47,50,52,53,54,55,56,58,60,61,62,63,64,65,66,68,69,70,71,72,74,75,77,80,85,88,90,91,92,95,98,100,102,110,115,120,125,130,135,140,170,180,185,190,192,200,210,220,225] 
     min, max = params[:akbcap].split('-').map {|s| s.to_i } 
     logger.warn("[email protected]!!!!!!!!!!!! AAA !!!!!!!!!!") 
     logger.warn(min) 
     logger.warn(max) 
     caprange = min...max 
     sa = akbcap_array.select {|n| caprange.include? n } 
     #@cross = OtherProductsCrossList.find(:all, :conditions => {:cross_value => 1}) 
     cap = "*"+params[:akbcap]+"*" 
     sa.each do |s| 
     logger.warn(s) 
     @accums = Accumulator.by_capacity(s).by_size(params[:akbsize]).by_brand(params[:akbbrand]) 
     end 
    else  
     @accums = Accumulator.by_capacity(50).by_size(params[:akbsize]).by_brand(params[:akbbrand]) 
    end 
    end 

正如你看到的,我有這樣的一部分:

sa.each do |s| 
      logger.warn(s) 
      @accums = Accumulator.by_capacity(s).by_size(params[:akbsize]).by_brand(params[:akbbrand]) 
      end 

但是我能添加在每次迭代@累積搜索數據?現在它已經最後的值(我可以通過陣列做到了......但如何通過類的變量做

回答

1

是,它開始循環之前,使用< <運營商追加,與扁平化,以結束使之成爲一維數組

@accums = [] 
# ... 
sa.each do |s| 
    @accums << Accumulator.several_method_calls...... 
end 
@accums.flatten! 

或用於緊湊:

result = sa.map{|s| Accumulator.several_method_calls...... }.flatten