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