ruby on rails - How to set different page size for the first page in Kaminari? -
i have number of objects paginate using kaminari. however, on first page show notification allowing viewer create own object, reducing number of objects can displayed on page. however, indicated number of pages should take account first page contains less elements.
let's objects letters through z. first page should 4 display letters: {a,b,c,d}
, while other pages should show 6 letters: {e,f,g,h,i,j}, {k,l,m,n,o,p}, etc...
i've been looking @ padding
, offset
functions, have not yet been able produce wanted results these.
@page
current page
if @page == 1 alphabet.page(@page).per(4) else alphabet.page(@page).per(6).padding(2) end
=> {a,b,c,d},{i,j,k,l,m,n}, etc...
if @page == 1 alphabet.page(@page).per(4) else alphabet.page(@page).per(6).offset(4) end
=> {a,b,c,d},{e,f,g,h,i,j}, {e,f,g,h,i,j} etc...
offset method not set current_page correctly, not seem correct method.
how can pagination looks {a,b,c,d}, {e,f,g,h,i,j}, {k,l,m,n,o,p}, etc...
, while displaying correct number of pages on first page, in case 5?
after more digging on internet, found interesting segment in 'kaminari recipes' paginating arrays, used ruby's instance_eval
method manually paginate array.
i tried using instance_eval
myself, , seems seems work, although looks rather hacky
@page = (params[:page] || '1').to_i if @page == 1 @alphabet = alphabet.recent.limit(4) else @alphabet = alphabet.recent.limit(6).offset(@page*6-8) end @alphabet.instance_eval <<-eval def current_page #{@page} end def total_pages ((alphabet.all.count+2)/6.0).ceil end eval
i'm sure there better way out there, since seems trick now, leave is.
Comments
Post a Comment