2009-01-30 24 views
1

J'ai un calendrier simple affichant quelques événements, cela ne me donne pas tout à fait les résultats attendus. Voici le code:Cyclisme à travers un tableau d'objets dans la vue dans Rails: comportement inattendu

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

voici le need_sowing? méthode appelée dans le bloc:

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 

Cela me donne le bon comportement quand il n'y a qu'une seule usine inspectée dans la boucle, mais s'il y a plus d'un, alors pas de sortie sera affiché en dehors de la première

output << render_calendar_cell(d.mday) 

(qui sort juste le jour du mois).

Quelqu'un peut-il donner un coup de main pour me dire où je vais peut-être mal? Ou avez-vous quelques conseils sur une meilleure façon de traiter ce genre de comportement dans la boucle?

TIA

Répondre

3

Vous devez utiliser @garden.plants.each au lieu de collect. Collect doit être utilisé pour filtrer les résultats du tableau pour ne pas les faire défiler.