W tym odcinku chciałbym pokazać wam jak dodać paginacje do naszego modelu.

Oto przykładowa lista postów.

Naszym celem jest ograniczenie ilości postów do 5 na stronę i przełączanie się między stronami.

W Ruby on Rails dostępnych jest kilka gemów do paginacji. Najpopularniejsze z nich to Kaminari i will paginate. Oba te gemy są regularnie aktualizowane. A wybór między nimi nie jest aż tak istotny. Oba robią to co mają robić. Ja użyje will paginate.

Do naszego gemfila musimy dodać gem

# paginate
gem 'will_paginate', '~> 3.1.0'

a w konsoli odpalić bundle install

teraz w modelu Post możemy dodać self.per_page = 5

co ograniczy nas do 5 postów na strone

Przejdźmy jeszcze do naszego kontrolera. W posts_controller.rb w akcji index gdzie wyciągamy z bazy nasze posty. Musimy dodać, a właściwie zamienić Post.all na Post.paginate(page: params[:page]) w ten sposób jako parametr będziemy wysyłać stronę jaka nas interesuje.

Przejdźmy do naszej strony.

Jak widzicie postów jest tylko 5, ale nie ma możliwości przejścia dalej. Można oczywiście w adresie w przeglądarce wpisać http://localhost:3000/posts?page=2 ale nie jest to wygodne rozwiązanie.

W widoku posts/index.html.erb

musimy dodać <%= will_paginate @posts %>

Jeżeli odświeżymy naszą stronę to możecie zobaczyć, że paginacja działa

To by było na tyle. Kolejny odcinek już wkrótce.

Miłego kodowania.

Kod aplikacji