在Rails中如何排除在each_slice上做一个索引位置?

时间:2018-01-03 18:50:23

标签: ruby-on-rails ruby

我有一系列帖子,其中包含以下数字= [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的最简单方法是什么?

2 个答案:

答案 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 %>