我正在迭代一组项目并将它们显示在嵌套在div中的列表中.目标是每天都有一个div,每个div中显示当天的项目.
我如何在HAML中执行此操作?我不认为我可以(或应该)有条件地关闭并创建一个新的标签,就像我在erb中所做的那样.
我试过了:
- @items.each do |item|
- if item date is diff from previous make a new container
.container
%h2 #{item.date}
= yield_content :display_item item
- else
= yield_content :display_item item
Run Code Online (Sandbox Code Playgroud)
但这会产生以下结果:
<div class="container">
<h2>01/28/2012</h2>
<ul>
<li>
... item
</li>
</ul>
</div>
<li>
...item
</li>
Run Code Online (Sandbox Code Playgroud)
但是我希望同一个div中的其他项目.我正在使用ruby,sinatra(包括content_for帮助器)
Phr*_*ogz 10
答案是使用更多更好的Ruby :)
- @items.group_by(&:date).each do |date,items|
.container
%h2= date
- items.each do |item|
= yield_content :display_item item
Run Code Online (Sandbox Code Playgroud)
有关Enumerable#group_by详细信息,请参阅文档.
您可以 按照自己的想法关闭并重新打开容器和标题,但这是一个可怕的,难以维护的黑客,我建议反对.拥抱Ruby和Haml的优雅; 不要写像哈尔一样的哈姆.
| 归档时间: |
|
| 查看次数: |
2017 次 |
| 最近记录: |