我有一个收藏:
@monday = HomeTask.where(:class_room => current_user.class_room, :day => 'Понеділок').order(created_at: :desc)
@monday
变量包含来自数据库的数据。在 View 中,我显示了集合中的所有日期:
<% @monday.each_with_index do |mnd, i| %>
<% if mnd.data == mnd.data[i + 1] %>
<%= link_to 'nice' %>
<% else %>
<%= link_to 'ohhh...' %>
<% end %>
<% end %>
在 if
主体中,我想引用下一个元素。但它不起作用。在 C++ 中,要在第一次迭代中引用下一个元素,可以这样编码:
if(array[i] == array[i+1])
如何在 Ruby 中使用 each
?
最佳答案
如果您想迭代一个数组并在每次迭代中访问多个项目,您可以使用 each_cons
arr = [1,2,3,4,5,6,7,8]
arr.each_cons(2){|a,b|
puts "#{a} : #{b}"
}
# 1 : 2
# 2 : 3
# 3 : 4
# 4 : 5
# 5 : 6
# 6 : 7
# 7 : 8
使用 each_cons,您可以轻松地比较数组中的两个(或更多)连续项。
关于ruby-on-rails - `each` 循环中的下一次迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53925031/