我有一个简单的日历显示的一些事件,这并不完全给我预期的结果。下面的代码:

<!-- 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

有帮助吗?

解决方案

您应该使用@garden.plants.each代替collect的。收集应使用对它们进行筛选阵列结果不循环。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top