Ruby / Rails - ограничить размер объекта / хеша - PullRequest
1 голос
/ 21 февраля 2011

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

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

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

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

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

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

Ответы [ 3 ]

12 голосов
/ 21 февраля 2011

Прежде всего, если вы хотите сделать пагинацию, я настоятельно рекомендую взглянуть на 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 %>

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

1 голос
/ 21 февраля 2011

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

0 голосов
/ 21 февраля 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...