Hello,
cela fait bien 1jours que je cherche comment faire ce tout petit bout de code. J'espere que vous allez pouvoir m'aider. :P
Voila la situation, je voudrais avoir comme résultat :
<div class="wrapper">
<div class="wrap-1">
<div class="inner-wrap-1"></div>
<div class="inner-wrap-1"></div>
<div class="inner-wrap-1"></div>
</div>
<div class="wrap-2">
<div class="inner-wrap-2"></div>
<div class="inner-wrap-2"></div>
<div class="inner-wrap-2"></div>
</div>
<div class="wrap-3">
<div class="inner-wrap-3"></div>
<div class="inner-wrap-3"></div>
<div class="inner-wrap-3"></div>
</div>
</div>
un truc simple, classic, mais combiné avec RoR et HAML, je suis un peu perdu.
J'ai deja fait quelque trucs qui me donne tous les inner-wrap-[1,2,3] mais sans les wraps. La raison l'indentation je ne sais pas comment faire pour changer ca.
Si je resume ce que je veux faire :
voila ce que j'ai produit pour l'instant.
.wrapper
- today = @date.beginning_of_week
- (today-1.week..today+2.week).each_with_index do |date, index|
//c'est la qu'est le probleme
- .wrap-1.week-1 if index == 0
- .wrap-2.week-2 if index == 7
- .wrap-3.week-3 if index == 14
.inner-wrap.day
Mais je ne sais pas comment introduire mes wraps. J'ai bien tenter de faire des if mais avec HAML il faut indenter correctement pour que cela fontionne et cela pose probleme pour les jours suivants qui sont tous dans le week-3.
Merci.
Il te faut utiliser les helpers Rails pour cela (app/helpers/application_helper.rb
par exemple). Tu vas devoir creer une methode dans laquelle tu passe par exemple une date, et qui te generera le code HTML correspondant. J'ai fait une ebauche rapide de ce que tu essai de faire et grosso-merdo, sa donne un truc de ce genre :
def create_wrapper_tag_for(date)
today = date.beginning_of_week
week_num = 0
capture_haml do
haml_tag '.wrapper' do
(today - 1.week..today + 2.weeks).each do |d|
if d == d.beginning_of_week
week_num += 1
haml_tag "div.wrap-#{week_num}.week-#{week_num}" do
(d..d.end_of_week).each do |day|
haml_tag "div.inner-wrap-#{day.to_date}"
end
end
end
end
end
end
end
Ensuite, tout ce que tu as a faire est d'appeler cette methode depuis ton template :
= create_wrapper_tag_for(Time.zone.today)
Le code ci-dessus par exemple genere ceci :
<div class='wrapper'>
<div class='wrap-1 week-1'>
<div class='inner-wrap-2015-11-09'></div>
<div class='inner-wrap-2015-11-10'></div>
<div class='inner-wrap-2015-11-11'></div>
<div class='inner-wrap-2015-11-12'></div>
<div class='inner-wrap-2015-11-13'></div>
<div class='inner-wrap-2015-11-14'></div>
<div class='inner-wrap-2015-11-15'></div>
</div>
<div class='wrap-2 week-2'>
<div class='inner-wrap-2015-11-16'></div>
<div class='inner-wrap-2015-11-17'></div>
<div class='inner-wrap-2015-11-18'></div>
<div class='inner-wrap-2015-11-19'></div>
<div class='inner-wrap-2015-11-20'></div>
<div class='inner-wrap-2015-11-21'></div>
<div class='inner-wrap-2015-11-22'></div>
</div>
<div class='wrap-3 week-3'>
<div class='inner-wrap-2015-11-23'></div>
<div class='inner-wrap-2015-11-24'></div>
<div class='inner-wrap-2015-11-25'></div>
<div class='inner-wrap-2015-11-26'></div>
<div class='inner-wrap-2015-11-27'></div>
<div class='inner-wrap-2015-11-28'></div>
<div class='inner-wrap-2015-11-29'></div>
</div>
</div>
Rien n'est optimiser ici, je te conseil de refactorer un peu tout cela et de te renseigner sur les helpers Haml http://haml.info/docs/yardoc/Haml/Helpers.html
waow, un grand MERCI.
Je vais regarder de plus pres les capture_haml et haml_tag, je ne connaisais pas.
Merci