HAML循环中生成嵌套的div

3
有没有办法生成多个嵌套的div?我希望打印出像这样的结果:
<div>
  <div>
    <div>
      <div>
        <div>
        </div>
      </div>
    </div>
  </div>
</div>

简单的循环并不能解决问题

- (1..5).each do |i|
  %div

前往

<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
1个回答

2

出于设计考虑,在纯Haml中没有任何方法可以实现这一点。

首先,问问自己:你真的需要这个吗?通常有更好的方法来实现你想要的结果。

在我的情况下,我需要根据外部给定的数字任意嵌套具有特定类的div。我将以下内容添加到我的Rails帮助程序中:

  def nestify(css_class, level, &block)
    if level > 0
      content_tag(:div, class: css_class) { nestify(css_class, level - 1, &block) }
    else
      yield
      ""
    end
  end

然后,在你的Haml中,你可以使用块来使用它:
= nestify('each-div-has-this-class', 5) do
  Content for inner div.

[编辑] 快速提示:我之前写过这篇文章,但现在不记得为什么了——但这段代码并不适合生产环境。Ruby 不太适合使用递归函数。请将其改成循环以获得更好的性能和可扩展性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接