我需要以4个条目的行显示视频。
看起来应该是这样(x
是视频):
x | x | x | x x | x | x | x x | x | x | x
现在,我正在调用一个while
循环,当我可以再获取4个视频时它将停止(因此它不会通过在一行上只显示三个来打破布局)。我正在使用变量(n
)拍摄4个视频(@videos[n..n+3]
)。
- n = 0
- while n+4 < @videos.count do
.row
%ul.thumbnails
- @videos[n..n+3].each do |v|
%li.span3
# code for showing the video
- n +=4
必须 才能做到这一点。
更新
我发现了令人敬畏的Rails函数in_groups_of。
所示ActiveSupport方法in_groups_of接受一个数组并将其放入组
更新2
我的第一次更新是一个有效的解决方案,但接受的答案更好。
答案 0 :(得分:1)
您正在使用Bootstrap的.thumbnails
组件和.span3
,因此您已经自动获得了四行。您不需要任何循环,嵌套列表或实用程序方法。
%ul.thumbnails
- @videos.each do |v|
%li.span3
# code for showing the video
它只是有效:http://jsbin.com/uguqib/edit
P.S。 ActiveSupport的in_groups_of
只是Ruby内置Enumerable#each_slice
的包装器,附加了填充项以完善最后一组。如果你需要这样的填充元素,你可以很容易地自己进行填充:
- @videos += [ nil ] * ( 4 - @videos.size % 4 )
%ul.thumbnails
- @videos.each do |v|
%li.span3
- if v then render_the_video_element
- else render_a_filler_element end