I have a number of objects I would like to paginate using Kaminari. However, on the first page I would also like to show a notification allowing the viewer to create his own
After some more digging on the internet, I found an interesting segment in 'Kaminari recipes' about paginating arrays, that used Ruby's instance_eval
method to manually paginate an array.
I tried using this instance_eval
myself, and it seems that this seems to work, although it 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 is some better way out there, but since this seems to do the trick for now, I will leave it as is.
Buddy, I've found the way of get it working using padding
:
@page = (params[:page] || '1').to_i
@per_page = 4
if @page == "1"
Alphabet.page(@page).per(@per_page - 1)
else
Alphabet.page(@page).per(@per_page).padding(-1)
end
This way, first page will return 3 items and the other pages 4 items.