본문 바로가기

Archived(Programming)/Ruby on Rails(기초)

RubyOnRails 7) Pagination 페이지 나누기

RubyOnRails 7) Pagination 페이지 나누기


참고 :

https://steemit.com/ruby/@kbs4674/ruby-on-rails-gem-kaminari



게시글들을 한 번에 쭉 나열하는 것이 아닌 페이지를 나눠서 보여주는 방법을 알아보고자 한다.

먼저 Kaminari 라는 젬을 사용할 것인데 gemfile에 해당 gem을 추가하고 설치해준다.


1
2
gem 'kaminari'
$ bundle
cs


그 다음, 페이지를 나눌 컨트롤러에 가서 다음의 코드를 추가해준다.


1
2
3
4
5
6
7
8
/app/controllers/posts_controller.rb
 
def index
    ...
    @posts = Post.order("created_at DESC").page(params[:page]).per(10)
    @page = (params[:page]).to_i
    ...
end
cs


참고로, 페이지가 나눠져 있는지 확인하기 위해 다음의 코드를 추가한뒤 확인해본다.


1
2
3
4
5
/db/seeds.rb
 
(1..100).each do |i|
   Post.create(title:"#{i}번째", content:"#{i}번째", user_id:1, category:1
end

$
cs


1
$ rake db:seed

cs


그 다음, view 파일을 수정해준다.


1
2
3
4
5
6
/app/views/posts/index.html.erb
 
...
<%= page_entries_info @posts %>
<%= paginate @posts %>
...
cs



추가로,  rails g kaminari:config 하면 초기화 폴더에 pagination의 기본 설정이 나와있음.

페이지 나누는 개수 얼마든지 바꿀 수 있음!

window는 내 현재 기준에서 몇개 보여지는 지 설정 가능!

outer_window도 보여주기 가능!


처음, 다음, 이전, 끝과 같은 키워드 바꿀 수 있음.

locales에서 en.yml의 맨 밑에서 커스터마이징 할 수 있다!(githuccode b에 나와있음)