2012-06-01 3 views
0

J'essaie de créer un tableau de dates pour un calendrier où il y a quelques jours supplémentaires pour le mois suivant et le mois précédent qui rempliront la semaine.RoR | Plage de dates ne traversant pas plusieurs mois

Voici ma méthode actuelle pour essayer d'obtenir le tableau

def calendar 
    selected_month = Date.civil((Time.zone.now.year).to_i, (Time.zone.now.month).to_i) 

    start_date = selected_month.beginning_of_month 
    start_date.sunday? ? start_date : start_date.beginning_of_week.advance(:days => -1) 

    end_date = selected_month.end_of_month 
    end_date.sunday? ? end_date.advance(:days => 1).end_of_week : end_date 

    #only puts 1-30/31 and does not include the extra off set of days from start and end. :( 
    date_range = (start_date..end_date).to_a 
end 

Le problème est le seul rang commencent à 1 et se dirige vers la fin du mois, même si les jours de début et de fin dépassent cela.

Je ne suis pas marié à cette façon d'obtenir le tableau alors peut-être que vous avez une meilleure idée?

Répondre

1

Vous avez oublié de réaffecter les valeurs de start_date et de end_date.

start_date = selected_month.beginning_of_month 
    start_date = start_date.sunday? ? start_date : start_date.beginning_of_week.advance(:days => -1) 

    end_date = selected_month.end_of_month 
    end_date = end_date.sunday? ? end_date.advance(:days => 1).end_of_week : end_date