Rails: 빵 찌꺼기 목록의 2페이지 뒤에 "X페이지"를 표시하는 방법

8464 단어 Rails
페이지 하이픈 넣기 기능이 있는 일람 표시 페이지의 빵 찌꺼기 목록에 "X페이지"를 표시하는 설치 방법은 다음과 같습니다.
교재로 하면 전달이 좀 어려워요.
  • 첫 페이지인 경우 ページ名
  • 2페이지인 경우 ページ名 > #{ページ数}ページ目
  • 이렇게 "1페이지와 2페이지 이후에는 다른 표현이 있을 것", "2페이지 이후에는 페이지 수가 표시될 것"이라는 설명이 나온다.

    컨디션


    자작한 콘텐츠 입소문 서비스https://github.com/yuki0920/supplebox를 가져온 프로젝트 일람페이지(/productts/index)를 전제로 설명한다.
    또한 페이지 단자 기능kaminari을 가정하고 빵 찌꺼기 목록 기능gretel에서 실현했다.
    # Gemfile
    gem 'kaminari'
    gem 'gretel'
    

    현상


    첫 번째 페이지와 두 번째 페이지 뒤에 페이지 이름(항목 목록)이 표시됩니다.

    gretel의 정통적인 용법을 사용하다.
    config/breadcrumbs.rb
    crumb :products do
      link 'アイテム一覧', products_path
      parent :root
    end
    
    app/views/products/index.html.haml
    - breadcrumb :products
    

    X 페이지 표시


    프로파일에 추가합니다.parent에서 제품을 설정합니다.두 번째 매개 변수로 페이지 수를 받아들여 페이지로 삼다
    페이지를 사용하여 페이지 수를 표시합니다.
    두 번째 매개변수에서 받은 값을 README의 샘플 세트에 표시할 수 있습니다.
    config/breadcrumbs.rb
    crumb :products do
      link 'アイテム一覧', products_path
      parent :root
    end
    
    # 追記
    crumb :products_pagination do |page|
      link "#{page}ページ目"
      parent :products
    end
    
    app/views/products/index.html.haml
    - breadcrumb :products_pagination params[:page]
    
    소스 View 템플릿을 호출할 때 breadcrumb 메서드의 매개 변수는 주의할 필요가 있습니다.
  • 첫 번째 매개 변수 중의 제품pagenation
  • 두 번째 파라미터는param[:page]
  • 을 포함한다.
    카미나리에서 페이지 수는 조회 매개 변수로 전파(예를 들어 /products?page=2하기 때문에 params[:page]에서 페이지 수를 두 번째 매개 변수로 전송한다.
    이렇게 하면 1페이지와 2페이지 이후에 빵 찌꺼기 목록에 페이지 수를 표시할 수 있다.
    그런데 첫 페이지에 문제가 있었어요.params[:page]는 nil이고 Home › アイテム一覧 › ページ目로 표시됩니다.

    1페이지와 2페이지 이후의 상황으로 나뉜다


    따라서 param[:page]의 값을 사용하여 1페이지와 2페이지 다음에 구분한다.
    app/views/products/index.html.haml
    - if params[:page].nil? || params[:page] == 1
      = breadcrumb :products
    - else
      = breadcrumb :products_pagination, params[:page]
    
    이렇게 하면 당초의 목표를 만족시킬 수 있다.
  • 첫 페이지인 경우 ページ名
  • 2페이지인 경우 ページ名 > #{ページ数}ページ目
  • 그럼에도 불구하고view 파일이 흐트러진 것에 신경을 많이 썼습니다.

    팩시밀리


    View 파일에 논리를 쓰면 전망이 나빠지기 때문에 이를 방법화한 후 조수에게 잘라냅니다.
    app/helpers/application_helper.rb
    def breadcrumb_pagination
      if params[:page].nil? || params[:page] == 1
        breadcrumb :products
      else
        breadcrumb :products_pagination, params[:page]
      end
    end
    
    호출원도 조수가 정의한 방법으로 수정됩니다.
    이만 마치겠습니다.
    app/views/products/index.html.haml
    - breadcrumb_pagination
    

    보충(System Spec)


    빵 부스러기 명세서의 설치에 관해서 나는 아래의 테스트를 썼고 규격을 보증했다.
    빵 찌꺼기 리스트와 관련된 실크만 발췌했기 때문에 분위기만 전달한다면.
    역시 테스트를 쓰면 팩스가 순조롭게 진행될 거야!
    spec/system/products_spec.rb
    # frozen_string_literal: true
    
    require 'rails_helper'
    
    describe 'アイテム', type: :system do
      describe '一覧機能' do
        before do
          create_list(:product, 13)
        end
    
        it 'ユーザーはアイテム一覧を閲覧できること' do
          visit products_path
          expect(page).to have_content 'Home › アイテム一覧'
          expect(page).to_not have_content 'Home › アイテム一覧 › 1ページ目'
          expect(page).to have_selector '.pagination'
          within '.pagination' do
            click_link '2'
          end
          expect(page).to have_content 'Home › アイテム一覧 › 2ページ目'
          within '.breadcrumbs' do
            expect(page).to have_link 'アイテム一覧' ,href: products_path
          end
        end
      end
    end
    

    좋은 웹페이지 즐겨찾기