# Paginator e articoli random

**URL:** <https://www.ruby-forum.com/t/paginator-e-articoli-random/93007>\
**Category:** IT\
**Created:** [April 26, 2007, 3:23pm UTC](https://www.ruby-forum.com/t/paginator-e-articoli-random/93007 "2007-04-26T15:23:27Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![luigi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/73ab20/32.png) [@luigi](https://www.ruby-forum.com/u/luigi)\
**Post date:** [April 26, 2007, 3:23pm UTC](https://www.ruby-forum.com/t/paginator-e-articoli-random/93007/1 "2007-04-26T15:23:27Z")

</div>

Salve a tutti.  
Non riesco a risolvere il seguente problema:  
attraverso il paginator del  
@guide\_pages, @guides = paginate( :guides, :order=\> ‘date desc’,  
:per\_page=\>15)  
visualizzo 15 articoli per pagina.  
Ora di questi 15 e solo di questi me ne servono 5 random.  
Ho provato a scrivere:  
step=Guide.count-15\*@guide\_pages.current.number  
@temp=Guide.find(:all,:offset=\>step,:limit=\>5,:order=\>‘RAND()’)  
perÃ² mi prende 5 articoli random non nell’intervallo offset - limit ma  
anche oltre e , almeno io, mi aspetterei quello che effettivamente  
voglio!

Grazie

---

<div class="post-metadata">

**Author:** ![luigi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/73ab20/32.png) [@luigi](https://www.ruby-forum.com/u/luigi)\
**Post date:** [April 26, 2007, 3:33pm UTC](https://www.ruby-forum.com/t/paginator-e-articoli-random/93007/2 "2007-04-26T15:33:38Z")

</div>

prova a farti il paginator a manina, usando la classe Paginator.  
poi estrai i tuoi 15 articoli con Guide.find…etc…, ne prendi 5 a  
caso di quei 15 ritornati e li passi al paginator.

dai un’occhiata alla documentazione di Paginator e ti sarà più chiaro.

On 4/26/07, luigi [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> però mi prende 5 articoli random non nell’intervallo offset - limit ma  
> removed\_email\_address@domain.invalid  
> [http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)

–  
– Kia

[therubymine.com](http://therubymine.com) | be a miner

---

<div class="post-metadata">

**Author:** ![luigi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/73ab20/32.png) [@luigi](https://www.ruby-forum.com/u/luigi)\
**Post date:** [April 26, 2007, 3:59pm UTC](https://www.ruby-forum.com/t/paginator-e-articoli-random/93007/3 "2007-04-26T15:59:42Z")

</div>

On 4/26/07, luigi [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> @temp=Guide.find(:all,:offset=\>step,:limit=\>5,:order=\>‘RAND()’)  
> però mi prende 5 articoli random non nell’intervallo offset - limit ma  
> anche oltre e , almeno io, mi aspetterei quello che effettivamente  
> voglio!

Non ti funziona perché ogni volta che fai una query, l’ordinamento  
–essendo  
per l’appunto casuale-- cambia. Tu vuoi paginare rispetto a una  
sequenza  
casuale ma fissata! Allora potresti fare così: invece di fare order by  
rand(), fai order by rand(n) dove n è un numero associato alla sessione  
dell’utente (ad esempio il suo session id).

RAND(), RAND(_N_)

> Returns a random floating-point value _v_ in the range 0 \<= _v_ \< 1.0. If  
> a constant integer argument _N_ is specified, it is used as the seed  
> value, which produces a repeatable sequence of column values.

M

Grazie

---

<div class="post-metadata">

**Author:** ![luigi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/73ab20/32.png) [@luigi](https://www.ruby-forum.com/u/luigi)\
**Post date:** [April 27, 2007, 10:26am UTC](https://www.ruby-forum.com/t/paginator-e-articoli-random/93007/4 "2007-04-27T10:26:07Z")

</div>

Ho risolto eh:  
@guide\_pages, @guides = paginate( :guides, :order=\> ‘date  
desc’,:conditions=\>“public=true”, :per\_page=\>15)  
@tot\_guide=Guide.count  
step=@tot\_guide-(15)\*@guide\_pages.current.number+rand(9)  
@key=Guide.find(:all,:offset=\>step,:limit=\>6,:order=\> ‘date desc’)

* * *

In questo modo la funzione rand(9) mi restituisce un numero tra 0 e 9  
casuale che cambia l’offset.

---

<div class="post-metadata">

**Author:** ![luigi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/73ab20/32.png) [@luigi](https://www.ruby-forum.com/u/luigi)\
**Post date:** [April 28, 2007, 7:09pm UTC](https://www.ruby-forum.com/t/paginator-e-articoli-random/93007/5 "2007-04-28T19:09:04Z")

</div>

Quella era una soluzione non robusta dato che con una pagina di meno di  
2 articoli succedono casini.  
Esiste una soluzione decisamente piÃ¹ efficace:

@key=@guides.sort\_by{rand}

in questo modo sono molto piÃ¹ random di prima!

---

<div class="post-metadata">

**Author:** ![luigi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/73ab20/32.png) [@luigi](https://www.ruby-forum.com/u/luigi)\
**Post date:** [April 26, 2007, 4:19pm UTC](https://www.ruby-forum.com/t/paginator-e-articoli-random/93007/6 "2007-04-26T16:19:40Z")

</div>

Chiaro Scuro wrote:

> prova a farti il paginator a manina, usando la classe Paginator.  
> poi estrai i tuoi 15 articoli con Guide.find…etc…, ne prendi 5 a  
> caso di quei 15 ritornati e li passi al paginator.
> 
> dai un’occhiata alla documentazione di Paginator e ti sarà °i?aro.
> 
> On 4/26/07, luigi [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:
> 
> > però ­© prende 5 articoli random non nell’intervallo offset - limit ma  
> > removed\_email\_address@domain.invalid  
> > [http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)
> 
> –  
> – Kia
> 
> [therubymine.com](http://therubymine.com) | be a miner

Ciao Kia,  
potresti essere un attimino piÃ¹ preciso.  
Ti faccio presente che il paginator mi serve per raccogliere gli  
articoli per le pagine del sito,  
la ricerca rand di 5 articoli della pagina per compilare le keywords.

Grazie
