<% @feed.sort_by{|t| - t.created_at.to_i}.first(10).each do |feed| %>
Тем не менее, вероятно, лучше опустить это в модель, подобную этой
<% @feed.recent(10).each do |feed| %>
И, на самом деле, если @feed
выйдет из базы данных, я бы опустил ее вниз. еще дальше: нет смысла загружать тонну несортированных записей фидов из БД, затем сортировать их и затем выбрасывать большинство из них. Лучше пусть БД сделает сортировку и фильтрацию.
См. Ответ @Peer Allan о том, как это сделать, в ActiveRecord
. В ARel
(IOW: Rails 3), вероятно, было бы еще проще, что-то вроде
Feed.all.order('created_at DESC').take(10)
Я бы сделал это так:
<% @array.limit(10).each do |a| %>
Следующий код вернет 10 последних записей.
@feed = @feed.sort! { |a,b| b.created_at <=> a.created_at }.take(10)
Считается, что созданный_кат указывает на то, что вы используете ActiveRecord в Rails для установки переменной @feed. Если это так, то лучше выполнить эту работу в SQL. Это гораздо эффективнее и легче иметь дело.
@feed = Feed.all(:order => 'created_at DESC', :limit => 10)
В противном случае, если вы действительно хотите использовать вид, чтобы сделать это, вы можете использовать сначала или диапазон
<% @feed.sort_by{|t| - t.created_at.to_i}[0..9].each do |feed| %>
<% @feed.sort_by{|t| - t.created_at.to_i}.first(10).each do |feed| %>
Я согласен с остальными (в частности, с Йоргом); но если вы все же хотите знать, как ограничить сам цикл, break
может быть полезен.
@array.each_with_index do |feed, i|
break if i == 10;
# ...