27 Nov
Rails: paginare una collezione
Lavorando su collezioni di oggetti provenienti da più tabelle si complica la gestione, compresa la paginazione. Googolando ho trovato questa funzione che potete inserire nell’application.rb e che vi consente di paginare collezioni di oggetti in modo semplice:
1 2 default_options = {:per_page => 10, :page => 1} 3 options = default_options.merge options 4 5 pages = Paginator.new self, collection.size, options[:per_page], options[:page] 6 first = pages.current.offset 7 last = [first + options[:per_page], collection.size].min 8 slice = collection[first...last] 9 return [pages, slice] 10 end
Poi chiaramente dove vi serve:
1 @pages, @items = paginate_collection Item.find_custom_query, :page => params[:page]
Chiaramente lo potete usare su una collezione così ad esempio: (Item.find(:all) + User.find(:all)).paginate_collection…


Io di solito uso il plugin will_paginate….funziona praticamente nello stesso modo ma ti aggiunge un metodo di classe direttamente nel tuo modello…tipo:
@posts = Post.paginatebyboard_id @board.id, :page => params[:page]
Si quello è molto comodo… però non ho visto se puuò paginare collezioni di oggetti tipo:
(Post + User).paginate…
E mi sembra che il Will_Paginate non lo faccia.
Con la funzione del post puoi farlo senza problemi…
Un Saluto
Duccio
ma in quanti usano ruby in italia?
Stanno aumentando
ruby rules!
Ruby on Rails è semplicemente straordinario!
più giorni ci sto dietro più mi viene voglia di scrivere codice!!
Ti Capisco!!