[Rails5] kaminari는 뭐야?

6445 단어 루비Rails번개

소개



Rails의 공부로서 gem 주위를 만져 보는 기획입니다.
이번에는...

번개

시도해 보겠습니다.

무슨 젬이야?



간단하게 말하면 페이지 네이션 기능을 간단하게 추가할 수 있는 gem이라고 하는 것.
유명한 커리어이므로 제대로 사용법을 기억합니다.

검증 환경



다음 환경에서 실시했습니다.
[client]
・MacOS Mojave(10.14.2)
・Vagrant 2.2.2
・VBoxManage 6.0.0

[virtual]
・CentOS 7.6
・Rails 5.2.2
・ruby 2.3.1

참고까지.

kaminari 도입



1.gem 설치

사전에 Rails 공부용으로 작성한 프로젝트로 진행합니다.
각 MVC는 적당히 게시판 앱을 상정하여 Posts 컨트롤러 등을 생성 완료되었습니다.
(index, show, edit의 빈 페이지를 볼 수있는 정도)
$ rails g model post
$ rails g controller posts index show edit

그 전제하에 Gemfile에 다음을 추가한다.

Gemfile
# kaminari
gem 'kaminari'

추가하면 설치.
$ bundle install

-----------
Fetching kaminari-core 1.1.1
Installing kaminari-core 1.1.1
Fetching kaminari-actionview 1.1.1
Installing kaminari-actionview 1.1.1
Fetching kaminari-activerecord 1.1.1
Installing kaminari-activerecord 1.1.1
Fetching kaminari 1.1.1
Installing kaminari 1.1.1
-----------
→無事に完了。

2. kaminari를 사용해보기

이제 kaminari를 사용할 수있게 된 것처럼,
조속히 컨트롤러와 뷰를 조정해 봅니다.
(※DB에는 사전에 더미 데이터를 적당히 복수건 돌진하고 있습니다.)

posts_controller.rb
def index
  # とりあえず基本形で表示してみる
  @posts = Post.page(params[:page])
end

index.html.erb
<h1>Posts#index</h1>
<p>Find me in app/views/posts/index.html.erb</p>

<table>
  <thead>
    <tr>
      <th>name</th>
      <th>content</th>
    </tr>
  </thead>
  <tbody>
    <% @posts.each do |post| %>
    <tr>
      <td><%= post.name -%></td>
      <td><%= post.content -%></td>
    </tr>
    <% end %>
  </tbody>
</table>

<%= paginate @posts -%>

3. 동작 확인

그럼 서버를 시작해 페이지를 보자.



표시되었습니다! 엄청 간편.
더미 데이터는 30건 돌진해 두었습니다만,
상기 처리라면 디폴트는 1 페이지당 25건이 되는 것 같습니다.

4. 좀 더 파헤쳐 보자

이것으로 소감에 들어가는 것도 맛이 없기 때문에 좀 더 만져 보겠습니다.

조속히 1 페이지당의 표시 건수를 10 건으로 변경해 보겠습니다.

posts_controller.rb
def index
  # 1ページの表示を10件に絞る
  @posts = Post.page(params[:page])
end

또는

post.rb
class Post < ApplicationRecord
  # この方法でも1ページあたりの表示件数の調整が可能
  paginates_per 10
end

그러면 이렇게 표시 건수를 제한할 수 있었습니다.



또한 원래 카미나리 자체의 설정을 조정하고,
표시 건수의 디폴트치를 변경하는 것도 가능.
$ rails g kaminari:config
    create  config/initializers/kaminari_config.rb

위의 명령으로 구성 파일이 생성되었습니다.

kaminari_config.rb
# frozen_string_literal: true
Kaminari.configure do |config|
  # config.default_per_page = 25
  # config.max_per_page = nil
  # config.window = 4
  # config.outer_window = 0
  # config.left = 0
  # config.right = 0
  # config.page_method_name = :page
  # config.param_name = :page
  # config.params_on_first_page = false
end

케이스 바이 케이스로 구분하면 좋을 것 같네요.

또 이번에는 손을 내지 않지만,
$ rails g kaminari:views default

명령으로 kaminari 템플릿이 생성됩니다.
외형을 조정하는 데 사용할 수있는 것 같습니다.
또한
$ rails g kaminari:views bootstrap

그렇다면 Bootstrap에서 적용이 가능.
또한, i18n에도 별도 대응하는 것도 가능하다.
안쪽이 깊다.

소감



간편하게 페이징을 추가할 수 있는 것은 좋네요.
일람 화면을 표시하는 시스템을 만들 기회도 꽤 많기 때문에,
꼭 활용해 갑시다.

결론



뭔가 눈치채는 점이 있으면,
지적이나 어드바이스등 받을 수 있으면 매우 도움이 됩니다!

좋은 웹페이지 즐겨찾기