HAML 在循环中生成嵌套的 div

标签 haml

有什么方法可以生成很多相互嵌套的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>

最佳答案

按照设计,在纯 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 中,将它与 block 一起使用:

= nestify('each-div-has-this-class', 5) do
  Content for inner div.

[编辑] 快速说明:我不久前写了这篇文章,不记得为什么 - 但这段代码还没有准备好生产。 Ruby 不能很好地处理递归函数。请将其展平成一个循环以获得更好的性能/可扩展性。

关于HAML 在循环中生成嵌套的 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29197186/

相关文章:

css - HAML - 表单样式和技巧 - 纯静态页面的新功能

haml - 使用 HAML 模板引擎的中间人 4.0.0 在使用服务器命令启动时出错

ruby-on-rails - 帮助 HAML : Mixing text and other HTML tags

ruby-on-rails - 来自 textarea 的输入以简单的形式和 haml 在每一行前面添加了奇怪的空格

html - 如何在haml的脚本标签中使用异步属性?

python - 可用于 Python 的 HAML 或 Jade 模板语法?

ruby-on-rails - Haml 单选按钮预选语法

ruby - 如何在中间人的部分中渲染部分

twitter-bootstrap - 很难理解 HAML 的缩进

jquery - 在 AJAX 响应中使用 js.haml 渲染部分内容