在HAML中有条件地关闭标记

在HAML中有条件地关闭标记,haml,Haml,我正在遍历一组项,并将它们显示在嵌套在div中的列表中。目标是每天有一个div,并在每个div中显示当天的项目 在哈姆我该怎么做?我不认为我可以(或者应该)有条件地关闭并创建一个新标签,就像我在erb中所做的那样 我试过: - @items.each do |item| - if item date is diff from previous make a new container .container %h2 #{item.date} = yield_co

我正在遍历一组项,并将它们显示在嵌套在div中的列表中。目标是每天有一个div,并在每个div中显示当天的项目

在哈姆我该怎么做?我不认为我可以(或者应该)有条件地关闭并创建一个新标签,就像我在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
但这造成了以下情况:

<div class="container">
<h2>01/28/2012</h2>
      <ul>
            <li>
              ... item
        </li>
      </ul>
</div>
        <li>
        ...item
      </li>

01/28/2012
  • ... 项目
  • …项目
  • 但我想把另一项放在同一个分区里。
    我正在使用ruby,sinatra(包括helper的内容)

    答案是使用更多更好的ruby:)

    有关更多详细信息,请参阅文档


    你可以,但这是一个可怕的,难以维护的黑客,我建议反对。拥抱红宝石和火腿的优雅;不要像ERB那样写Haml。

    我认为这在Haml中是不可能的。您可能需要更改数据结构。我正在服务器端收集数据,数据已按日期排序。我必须将以下结构传递给视图,这似乎很愚蠢:[date=>[items]]。如果我找不到解决方案,那就是我的退路了谢谢。我想那是我能弄到的最干净的了。我想在服务器端组织它,但这对我来说更干净,我不认为性能会受到影响。太棒了——这就省去了十几行样板。
    - @items.group_by(&:date).each do |date,items|
      .container
        %h2= date
        - items.each do |item|
          = yield_content :display_item item