如何使用循环和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