我想用Rails和Haml渲染日曆。Haml-if-else用不同的縮進
使用的日期來自一個名爲@dates
的變量。這是一個Date
範圍,其中包含要在日曆上顯示的第一天和最後一天。第一天總是星期天,最後一天總是星期一。
我打算使用HTML表格呈現一個典型的日曆,每個工作日一列(星期日將是一週的第一天)。
因此,我需要在週日放置一個%tr
,然後是%td
,但其餘的日子我只需要一個%td
。
我很難在Haml中建模。這似乎需要不同級別的縮進,而這是它不喜歡的。這是我的失敗嘗試:
%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
這不符合我的要求。該%td
S爲無星期天天出現在%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>
...
我嘗試添加兩個空格的else
但隨後Haml的抱怨壓痕不當。
這樣做的最好方法是什麼?
注意:我對使用無序列表呈現日曆不感興趣。請考慮使用表格作爲問題的限制之一。
我相信只有在第一天(第一週)的時候纔會有效。 @dates包含數週,而不僅僅是一個。我想每週放一個%tr。 – kikito 2010-04-21 11:04:47
你不能以正常的方式在haml中完成它。有兩種選擇。首先,將你的數組切成幾周,並按照我的答案(這將是我的首選解決方案)中所示的迭代每個數組。其次,實際上手動打印標籤:=「
我發現了一種使用in_groups_of(添加答案)的方法。感謝您的幫助,我真的被這個縮進東西阻塞了。 – kikito 2010-04-21 11:30:40
相關問題