Постраничная навигация в Ruby on Rails

Начать использовать постраничную навигацию (или пагинацию) в Ruby on Rails очень просто. Для этого сначала нужно добавить использование gem'а will_paginate в Gemfile...

Автор . Дата: 03.11.2014

Начать использовать постраничную навигацию (или пагинацию) в Ruby on Rails очень просто. Для этого сначала нужно добавить использование gem'а will_paginate в Gemfile:

gem 'will_paginate'

После чего в контроллере, при выборке записей нужно добавить метод paginate. Например:

@posts = Post.paginate(:page => params[:page], :per_page => 30)

Здесь используются 2 аргумента:

  • page - это номер текущей страницы. Мы берем его из хеша с параметрами.
  • per_page - это кол-во записей, которые будут выбираться на одну страницу

Теперь нам нужно отрендерить выбор страниц во вьюхе. Для этого добавим в требуемое место:

<%= will_paginate @posts %>

Для локализации текстов нам нужно добавить в наш файл локализации следующее:

ru:
  will_paginate:
    previous_label: "&#8592; Назад"
    next_label: "Далее &#8594;"
    page_gap: "&hellip;"

В итоге мы получим что-то вроде этого:

Все это очень круто, но как-то неказисто. Если вы верстаете свой сайт на основе Twitter Boostrap, то вы можете сделать рендеринг пагинации в его стиле. Для этого вместо гема will_paginate вам нужно установить гем will_paginate-bootstrap:

gem 'will_paginate-bootstrap'

И рендерим вот таким образом:

<%= will_paginate @posts, renderer: BootstrapPagination::Rails %>

В результате мы получим уже вот такую картину:

Согласитесь, этот вариант намного красивей :-)

В следующей статье мы рассмотрим, как на примере will_paginate и jQuery можно сделать сделать подгрузку записей как в вконтакте.