03/03/07 tarihinde Ruby On Rails, Yararlı, İpuçları bölümlerinde yer almak üzere yazıldılar.
Ruby On Rails’in tabloları ve sonuçları otomatik sayfalandıran Pagination nesnesi birçok zahmetten bizleri kurtarıyor. Lakin, modelimize ait bir fonksiyonda dönen kayıtları sayfalandırmak için varsayılan olarak hazır bir yapı bulunmuyor. Mutlaka tüm dönen sonuç bilgilerini “pagination” nesnesinde “paginate” fonksiyonuna göndermek gerekiyor. Dönen kayıtların adeti, ilk ve son kayıt arası fark gibi.
Bizleri bu zahmetten kurtaracak olan ufak bir fonksiyon.
application.rb dosyasına bu fonksiyonu koyarsanız, iÅ?lev tüm yazılım denetleyicileri tarafından eriÅ?ebilir olacaktır.
# Sayfalama olaylarını dönen fonksiyon kayıtları içinde yapar
# application.rb dosyasına konulduÄ?u takdirde tüm denetleyiciler
# tarafından kullanılabilir olacaktır.
# http://snippets.dzone.com/posts/show/389
def paginate_collection(collection, options = {:per_page => 10, :page => 1})
pages = Paginator.new self, collection.size, options[:per_page], options[:page]
first = pages.current.offset
last = [first + options[:per_page], collection.size].min
slice = collection[first...last]
return [pages, slice]
end
# application.rb dosyasına konulduÄ?u takdirde tüm denetleyiciler
# tarafından kullanılabilir olacaktır.
# http://snippets.dzone.com/posts/show/389
def paginate_collection(collection, options = {:per_page => 10, :page => 1})
pages = Paginator.new self, collection.size, options[:per_page], options[:page]
first = pages.current.offset
last = [first + options[:per_page], collection.size].min
slice = collection[first...last]
return [pages, slice]
end
Kullanımına dair bir örnek:
# model dosyamızda Emlak isimli model olduÄ?unu varsayarsak
def Emlak.tum_emlaklar
find(:all, :conditions => 'blablabla')
end
# controller dosyamızda
def ....
@emlak_sayfalar, @emlaklar = paginate_collection Emlak.tum_emlaklar, {:per_page => 1, :page => params[:page]}
end
def Emlak.tum_emlaklar
find(:all, :conditions => 'blablabla')
end
# controller dosyamızda
def ....
@emlak_sayfalar, @emlaklar = paginate_collection Emlak.tum_emlaklar, {:per_page => 1, :page => params[:page]}
end






