如何确定每个循环中的最后一个对象?

时间:2009-05-30 06:33:07

标签: ruby-on-rails

在Rails中典型的每个循环中,如何确定最后一个对象,因为我想做一些与其他对象不同的东西。

<% @stuff.each do |thing| %>

<% end %>

5 个答案:

答案 0 :(得分:61)

@stuff.each do |s|
  ...normal stuff...
  if s == @stuff.last
    ...special stuff...
  end
end

答案 1 :(得分:28)

有趣的问题。使用each_with_index。

len = @stuff.length

@stuff.each_with_index do |x, index|
 # should be index + 1       
 if index+1 == len
 # do something
  end
end

答案 2 :(得分:6)

<% @stuff[0...-1].each do |thing| %>
  <%= thing %>
<% end %>
<%= @stuff.last %>

答案 3 :(得分:2)

处理它的方式有点天真,但是:

<% @stuff.each_with_index do |thing, i| %>
  <% if (i + 1) == @stuff.length %>
    ...
  <% else %>
    ...
  <% end %>
<% end %>

答案 4 :(得分:1)

使用

的更多lispy替代方案
@stuff[1..-1].each do |thing|

end
@stuff[-1].do_something_else