使用HAML(在Ruby on Rails中),有没有办法生成50个嵌套的DIV?

时间:2011-05-24 02:14:21

标签: ruby-on-rails haml

要在嵌套DIV中测试CSS边框的内容,需要生成50个DIV。 换句话说,生成

<div>
  <div>
    <div>
      ...  total 50 of them nested
    </div>
  </div>
</div>

,因为

- 50.times do
  %div 

不会这样做,因为它们都是平行的,而不是嵌套的。

3 个答案:

答案 0 :(得分:4)

简单,但似乎有效。

- 50.times do
  <div>
- 50.times do
  </div>

v2 - 仍然过于简单,但提供了更多选择。

- 50.times do |i|
  != "<div style='border-style:#{cycle('dotted','dashed')}'>".rjust(i+35)
  = i
- 50.downto(1) do |i|
  != "</div>".rjust(i+35) 

答案 1 :(得分:1)

你可以试试这个:

module ApplicationHelper

  def recursive_divs(number)
    if number > 0
      number -= 1
      content_tag :div do
        recursive_divs(number)
      end
    end
  end

end

并在你的观点中使用它:

= recursive_divs(50)

希望这会有所帮助

答案 2 :(得分:0)

你很亲密。您所要做的就是为循环的每次迭代添加2个空格。

- 50.times do |i|
  ="#{' ' * (i*2)}"%div

' ' * (i*2)部分正在利用字符串可以倍增的事实。