2009-01-30 14 views
1

我有一個顯示某些事件的簡單日曆,這並不能給我預期的結果。下面的代碼:在Rails中查看視圖內的對象陣列:意外的行爲

<!-- Begin Calendar --> 
<%= calendar(:year => @year, :month => @month, :first_day_of_week => 1) do |d| 

    output = [] 
    output << render_calendar_cell(d.mday) 

    if d.wday == 1 
     @garden.plants.collect do |p| 
      if p.needs_sowing? (d.cweek) 
       output << "This week sow: #{p.name}" 
      end 
     end 
    end 

    end 
%> 
<!-- end calendar--> 

這裏的need_sowing?方法稱爲塊內:

def needs_sowing? (week) 
     if !sow_out_week_min.blank? && !sow_out_week_max.blank? 
     (sow_out_week_min..sow_out_week_max).include? (week) 
     end 
end 

這是給我正確的行爲時,有被檢查在循環僅一種植物,但是,如果有一個以上,則沒有輸出將被從最初的顯示開

output << render_calendar_cell(d.mday) 

(它只輸出當月的某天)。

任何人都可以伸出援手讓我知道我可能會出錯嗎?或者有一些更好的方法來處理循環中的這種行爲?

TIA

回答

3

您應該使用@garden.plants.each,而不是collect。收集應該用來過濾數組結果而不是循環它們。