will_paginate의 window 옵션을 설치하는 중 오류가 발생했습니까?

2677 단어 RubyRails

개시하다


Rails에서 호출 기능을 실현한gem가 몇 개 있지만, 나 자신은 윌이다페이지nate를 사용하고 있습니다.그 옵션은 의도대로 기능을 발휘하지 않아서 잘못 설치한 줄 알았는데 결론이 옳았다.

이벤트


will_페이지nate에는 View에 표시되는 페이지 링크 범위에 대한 옵션이 있습니다.
outer_첫 페이지와 마지막 페이지 뒤(앞)에 표시되는 페이지 수
inner_표시된 페이지 앞뒤에 표시되는 페이지 수
저는 아웃입니다.0、inner window창을 1로 설정합니다.
따라서 행동은 다음과 같다.

outer_창은 0이며 2페이지와 16페이지는 표시되지 않습니다.
inner_윈도우는 1이기 때문에 현재 페이지의 5페이지 앞뒤 4페이지와 6페이지에 표시됩니다.
예상한 동작과 같다.
그러나 4페이지를 선택할 때는 다음과 같이 동작합니다.

outer_창은 0이며 두 페이지는 표시되지 않습니다.
또한 현재 페이지도 4페이지이기 때문에 앞의 3페이지만 표시하고 2페이지는'...'로 생략해야 한다.
그럼에도 불구하고 두 페이지가 보였다.

코드


will_페이지nate 전선을 보세요.
GiitHub에서 viewhelper 주위의 코드를 확인한 후 다음과 같은 기술이 있습니다.
view_helpers/link_renderer_base.rb
# left window
if outer_window + 3 < middle.first # there's a gap
  left = (1..(outer_window + 1)).to_a
  left << :gap
else # runs into visible pages
  left = 1...middle.first
end
페이지의 표시는left,middle,right로 나뉜다.
필요하면 left와 middle 사이gap("...").
이 코드는윈도우에 있는 +3의 숫자가middle의 첫 페이지보다 작은 경우 가프를 삽입한다고 적혀 있다.
이번에 4페이지를 선택했기 때문에middle의 첫 페이지는 4-1=3,outerwindow+3 = 3, gap 삽입 조건이 충족되지 않습니다.
그래서 2페이지를 포함해 모두 표시됐다.

까닭


이 경우 "..."디스플레이는 1개(2페이지)만 생략할 수 있습니다.
어느 쪽이든 한 글자의 공간이 차지된다는 얘기다.
만약 그렇다면 아무런 기능도 없다페이지 링크 표시는 페이지 링크 표시보다 사용자에게 도움이 됩니다.
따라서 2페이지 이상을 생략할 수 없으면 바로 페이지 링크가 표시됩니다.

끝말


겸사겸사 다른 호출gem(kaminari,pagy),will을 사용해 봤어요.페이지nate의 행동과 같습니다.표준 동작인가 봐요.

좋은 웹페이지 즐겨찾기