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

Popular posts from this blog

Unable to remove the www from url on https using .htaccess -