Ruby on rails 在Rails中,如何排除每个_片上的索引位置?

Ruby on rails 在Rails中,如何排除每个_片上的索引位置?,ruby-on-rails,ruby,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.p

我有一个包含以下数字的帖子数组=[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。表示从索引1开始的每个片段的最简单方法是什么?

您可以使用
[]
运算符轻松地除去数组的第一个元素,以迭代其余元素(以您想要的方式):

<% @post[1..-1].each_slice(2) do |post, b| %>
  # ...
<% end %>

# ...
另外,我想您应该检查第二篇文章是否存在(如果您的数组是偶数,如示例中所示),如下所示:

<% if b %>
  <%= b.number %>
  <%= image_tag b.post_image %>
<% end %>

使用
[]
操作符,您可以轻松地去除数组的第一个元素以迭代其余元素(以您想要的方式):

<% @post[1..-1].each_slice(2) do |post, b| %>
  # ...
<% end %>

# ...
另外,我想您应该检查第二篇文章是否存在(如果您的数组是偶数,如示例中所示),如下所示:

<% if b %>
  <%= b.number %>
  <%= image_tag b.post_image %>
<% end %>

像这样做

<% @post.drop(1).each_slice(2) do |post, b| %>
  # ...
<% end %>

做这样的事

<% @post.drop(1).each_slice(2) do |post, b| %>
  # ...
<% end %>

最佳做法是用复数形式命名数组。我会将
@post
更改为
@posts
。最佳做法是用复数命名数组。我会将
@post
更改为
@posts
。我觉得这就是答案,但当我添加它时,我在第二张图像上得到了未定义的方法(更新了代码以显示此内容)。@Jake是的,您现在必须检查此片段的第二个元素是否存在。我编辑了我的答案以反映这一点。这解决了问题。我觉得这应该是答案,但在我添加它的那一刻,我在第二张图像上得到了未定义的方法(更新了代码以显示这一点)。@Jake yup,你现在必须检查这个片段的第二个元素是否存在。我编辑了我的答案以反映这一点。这解决了问题。