J'essaie de rendre un calendrier avec Rails et Haml.Haml - if-else avec des indentations différentes
Les dates utilisées proviennent d'une variable appelée @dates
. Il s'agit d'une plage Date
qui contient les premier et dernier jours à afficher sur le calendrier. Le premier jour est toujours le dimanche et le dernier jour est toujours le lundi.
Je prévois de rendre un calendrier typique, avec une colonne par jour de la semaine (dimanche sera le premier jour de la semaine) en utilisant un tableau HTML.
Donc, je dois mettre un %tr
suivi d'un %td
le dimanche, mais le reste du jour j'ai juste besoin d'un %td
.
Je n'arrive pas à modéliser cela dans Haml. Cela semble exiger différents niveaux d'indentation, et c'est quelque chose qu'il n'aime pas. Voici ma tentative échouée:
%table
%tr
%th= t('date.day_names')[0] # Sunday
%th= t('date.day_names')[1]
%th= t('date.day_names')[2]
%th= t('date.day_names')[3]
%th= t('date.day_names')[4]
%th= t('date.day_names')[5]
%th= t('date.day_names')[6] # Monday
[email protected] do |date|
- if(date.wday == 0) # if date is sunday
%tr
%td=date.to_s
- else
%td=date.to_s
Cela ne fonctionne pas comme je le souhaite. Les %td
s pour les jours non dimanche apparaissent en dehors de la %tr
:
<tr>
<td>2010-04-24</td>
</tr>
<td>2010-04-25</td>
<td>2010-04-26</td>
<td>2010-04-27</td>
<td>2010-04-28</td>
<td>2010-04-29</td>
<td>2010-04-30</td>
<tr>
<td>2010-05-01</td>
</tr>
<td>2010-05-02</td>
<td>2010-05-03</td>
...
J'ai essayé d'ajouter deux autres espaces à l'else
mais Haml se sont plaints de retrait non conforme.
Quelle est la meilleure façon de faire cela?
Remarque: Je ne suis pas intéressé par le rendu du calendrier en utilisant des listes non ordonnées. Veuillez considérer l'utilisation d'une table comme l'une des contraintes du problème.
Je crois que cela ne fonctionnera qu'avec la première rangée de jours (première semaine). @dates contient plusieurs semaines, pas une seule. Je veux mettre un% tr par semaine. – kikito
Vous ne pouvez pas le faire en haml d'une manière normale. Il y a deux options. Tout d'abord, découpez votre tableau en plusieurs semaines et répétez chacun d'entre eux comme indiqué dans ma réponse (ce serait ma solution préférée). Deuxièmement, en fait imprimer les balises manuellement: = "
J'ai trouvé un moyen de le faire en utilisant in_groups_of (ajout de réponse). Merci pour l'aide, j'ai été vraiment bloqué par ce genre d'indentation. – kikito
Questions connexes