我有一系列帖子,其中包含以下数字= [1,2,3,4,5,6,7,8,9,10]。
在我的再培训局中,我有以下内容:
<% @post.each_slice(2) do |post, b| %>
<% if post.number != 1 %>
<%= post.number %>
<%= image_tag post.post_image %>
<%= b.number %>
<%= image_tag b.post_image %>
<% end %>
<% end %>
基本上我想要以下几行:
[2, 3]
[4, 5]
[6, 7]
[8, 9]
[10]
当我使用上面的代码时,我最终得到:
[3, 4]
[5, 6]
[7, 8]
[9, 10]
我有点理解为什么。我基本上是把切片分成两个,然后我说“好好摆脱1”,这样就可以摆脱1和2.从index 1开始说each_slice的最简单方法是什么?
答案 0 :(得分:3)
做这样的事情
<% @post.drop(1).each_slice(2) do |post, b| %>
# ...
<% end %>
这将产生这样的输出。
[2, 3]
[4, 5]
[6, 7]
[8, 9]
[10]
答案 1 :(得分:2)
使用[]
运算符,您可以轻松摆脱数组的第一个元素,以迭代其余元素(以您想要的方式):
<% @post[1..-1].each_slice(2) do |post, b| %>
# ...
<% end %>
另外,我猜你应该检查第二篇文章是否存在(如果你的数组是偶数的,就像你的例子中一样),像这样:
<% if b %>
<%= b.number %>
<%= image_tag b.post_image %>
<% end %>