Ruby/Rails — ограничить размер объекта/хэша

У меня есть объект с именем @events, содержащий около 50 записей, извлекаемых из условия поиска моей модели.

В настоящее время я показываю результаты @object в своем представлении следующим образом....

<% for event in @events %>
    <p><%= @event.name %></p>           
<% end %>

Вместо того, чтобы отображать все 50, я хотел бы уменьшить набор примерно до 10 записей, чтобы он лучше отображался на странице.

Я не могу использовать :limit в условии поиска, так как объект состоит из множества циклов, где после каждой итерации он добавляет несколько определенных записей.

Итак, проблема в том, что у меня есть этот объект @events с 50 записями, как я могу изменить объект после его составления, чтобы остались только первые 10 записей?


person ChrisWesAllen    schedule 21.02.2011    source источник


Ответы (3)


Прежде всего, если вы хотите иметь нумерацию страниц, я настоятельно рекомендую взглянуть на will_paginate.

Кроме того, вы можете сделать следующее, чтобы прочитать только первые 10 записей.

<% @events.first(10).each do |event| %>
    <p><%= event.name %></p>           
<% end %>

Или последние 10 записей

<% @events.last(10).each do |event| %>
    <p><%= event.name %></p>           
<% end %>

Я не проверял, но вы поняли.

person nvez    schedule 21.02.2011

Вы хотите полностью покончить с остальными 40 или просто хотите использовать 10 на странице для целей отображения. если вы делаете это просто для отображения, я бы посмотрел на гем will_paginate. с помощью его параметров вы можете настроить его так, чтобы отображались только 10 результатов на странице.

person Will Ayd    schedule 21.02.2011

Взгляните на will_paginate и kaminari. Оба они предназначены для ограничения записей, извлекаемых из базы данных, а также предлагают помощники для ваших представлений, чтобы предоставить обычное количество страниц и текущие списки страниц.

Will_paginate существует уже некоторое время и является довольно гибким. Kaminari новее и выглядит так, как будто у него более чистый интерфейс.

person the Tin Man    schedule 21.02.2011