Scorrere ciclicamente una serie di oggetti alla vista in Rails: comportamento imprevisto

StackOverflow https://stackoverflow.com/questions/495319

  •  20-08-2019
  •  | 
  •  

Domanda

Ho un semplice calendario che mostra alcuni eventi, il che non mi dà esattamente i risultati attesi. Ecco il codice:

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

ecco la necessità di seminare? metodo chiamato all'interno del blocco:

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

Questo mi sta dando il comportamento corretto quando c'è un solo impianto ispezionato nel loop, ma se ce ne sono più di uno, allora nessun output verrà visualizzato a parte l'iniziale

output << render_calendar_cell(d.mday) 

(che mostra il giorno del mese).

Qualcuno può dare una mano per farmi sapere dove forse sto sbagliando? O hai qualche consiglio su un modo migliore per elaborare questo tipo di comportamento nel ciclo?

TIA

È stato utile?

Soluzione

Dovresti usare @garden.plants.each invece di collect. Collect dovrebbe essere usato per filtrare i risultati dell'array in modo da non scorrere su di essi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top