如何使用循环和haml与ruby创建表?

我正在尝试制作一个看起来像这样的html表:

1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 

我的数据结构是这样的:@f_ary = [1..250]

这是我的haml代码:

 %table{:border => "1"} %tbody %tr - cnt = 0 - @f_ary.each do |f| - cnt += 1 %td= cnt - if cnt == 5 - cnt = 0 %tr 

我目前的输出如下:

 
1 2 3 4 5
1 2 3 4 5

我希望它看起来像这样:

 
1 2 3 4 5
1 2 3 4 5

您应该尝试将所有逻辑用于在控制器中创建行和列数组。 然后在Haml中渲染视图变得非常简单:

控制器:

 @items = [ [1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15] ] 

视图:

 %table %tbody - @items.each do |row| %tr - row.each do |column| %td= column 

如果你有一个扁平的项目数组而不是我的例子中的数组数组,你可以使用flat_array.each_slice(5).to_a轻松转换它,其中5是列数。

您可以像这样使用each_slice:

 - @f_ary.each_slice(5) do |row| %tr - row.each do |cnt| td=cnt 

更新

这可能是最无耻的做法,(我在3年左右做过这个)。 所以

看看上面的答案,他们会好得多

我将保留这个答案而不删除,仅作为参考,如何不做…;)


在视图中有一个内部计数器,当涉及到5时,添加一个。 psudo看起来会像这样

 couneter = 0 @items.each |item| if counter == 0  end if counter != 5 item counter ++ end if counetr == 5  counetr = 0 end end end 

我希望你明白这个主意

干杯

sameera