Как определить последний объект в каждом цикле? - PullRequest
36 голосов
/ 30 мая 2009

Как вы обычно определяете последний объект в вашем типичном цикле в Rails, потому что я хочу сделать что-то другое, чем остальные объекты.

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

<% end %>

Ответы [ 5 ]

61 голосов
/ 13 февраля 2013
@stuff.each do |s|
  ...normal stuff...
  if s == @stuff.last
    ...special stuff...
  end
end
28 голосов
/ 30 мая 2009

Интересный вопрос. Используйте 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
6 голосов
/ 13 февраля 2013
<% @stuff[0...-1].each do |thing| %>
  <%= thing %>
<% end %>
<%= @stuff.last %>
2 голосов
/ 30 мая 2009

Несколько наивный способ справиться с этим, но:

<% @stuff.each_with_index do |thing, i| %>
  <% if (i + 1) == @stuff.length %>
    ...
  <% else %>
    ...
  <% end %>
<% end %>
1 голос
/ 02 июня 2009

Более легкая альтернатива - использовать

@stuff[1..-1].each do |thing|

end
@stuff[-1].do_something_else
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...