# Modificare css Will Paginate

**URL:** <https://www.ruby-forum.com/t/modificare-css-will-paginate/173303>\
**Category:** IT\
**Created:** [August 6, 2009, 1:36pm UTC](https://www.ruby-forum.com/t/modificare-css-will-paginate/173303 "2009-08-06T13:36:22Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![JellyBellyWeb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/c0e974/32.png) [@JellyBellyWeb](https://www.ruby-forum.com/u/JellyBellyWeb)\
**Post date:** [August 6, 2009, 1:36pm UTC](https://www.ruby-forum.com/t/modificare-css-will-paginate/173303/1 "2009-08-06T13:36:22Z")

</div>

Salve baldi giovani,  
Ho installato la gem will paginate:

> **[GitHub - mislav/will\_paginate: Pagination library for Rails and other Ruby...](https://github.com/mislav/will_paginate/tree/master)**
>
> master

In fondo alla documentazione consigliano link dove prendere spunto per  
modificare il layout della propria pagination, come questo link:  
[http://www.smashingmagazine.com/2007/11/16/pagination-gallery-examples-and-good-practices/](http://www.smashingmagazine.com/2007/11/16/pagination-gallery-examples-and-good-practices/)

Bhe io avrei scelto di modificare la mia pagination come in fondo a  
questo sito: [Deprecated - Drupal.org infrastructure | Drupal.org](http://drupal.org/forum/12?page=23)

Se ho capito bene il sistema della pagination, mi genera un html in  
automatico che io non posso modificare, ma limitarmi solo a generare  
le classi css contenute. Giusto?

ho dato uno sguardo al sorgente della mia pagination di default che è  
così:[CODE]

« Previous1[2](https://www.ruby-forum.com/users?page=2)[Next »](https://www.ruby-forum.com/users?page=2)
[/CODE]

mentre l’html della pagination che vorrei realizzare  
è così:[CODE]

- 1
- [2](https://www.ruby-forum.com/forum/12?page=1 "Go to page 2")
- [3](https://www.ruby-forum.com/forum/12?page=2 "Go to page 3")
- [4](https://www.ruby-forum.com/forum/12?page=3 "Go to page 4")
- [5](https://www.ruby-forum.com/forum/12?page=4 "Go to page 5")
- [6](https://www.ruby-forum.com/forum/12?page=5 "Go to page 6")

```
<li class="pager-item"><a href="/forum/12?page=6" title="Go to page

```

7" class=“active”\>7

- [8](https://www.ruby-forum.com/forum/12?page=7 "Go to page 8")
  
- [9](https://www.ruby-forum.com/forum/12?page=8 "Go to page 9")
  
- …
  
- [next ›](https://www.ruby-forum.com/forum/12?page=1 "Go to next page")
  
- [last »](https://www.ruby-forum.com/forum/12?page=23 "Go to last page")

[/CODE]

Quindi a primo acchitto penso sono fregato… questa paginazione sua  
ul ed li, mentre la mia di default usa gli span!!!  
Come diavolo faccio???

Ecco perchè vi scrivo! Svelatemi l’arcano please!

Un Ringraziamento in anticipo a chiunque mi possa aiutare.  
Ciao

–  
JellyBellyWeb  
removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![JellyBellyWeb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/c0e974/32.png) [@JellyBellyWeb](https://www.ruby-forum.com/u/JellyBellyWeb)\
**Post date:** [August 6, 2009, 1:59pm UTC](https://www.ruby-forum.com/t/modificare-css-will-paginate/173303/2 "2009-08-06T13:59:47Z")

</div>

Il giorno 06 agosto 2009 13.35, JellyBellyWeb[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
ha scritto:

> Quindi a primo acchitto penso sono fregato… questa paginazione sua  
> ul ed li, mentre la mia di default usa gli span!!!  
> Come diavolo faccio???

potresti modificare gli helper, che trovi in  
/vendor/plugins/will\_paginate/lib/will\_paginate/view\_helpers.rb;  
tuttavia,  
perché?immagino che il tuo scopo sia ottenere l’effetto visivo che usa  
drupal, non il suo markup.

tra l’altro mi sembra che, nella pagina che hai linkato, lo stile sia  
applicato all’elemento a, non al li (e comunque anche in quel caso  
basterebbe fare un copia e incolla mirato).

che so,

.pagination a {  
padding: 2px 5px;  
background:#dfedf7;  
border:1px solid #90c2e1;  
-moz-border-radius:2px;  
-webkit-border-radius:2px;  
}

(copiato pari pari da drupal).  
ah, .pager li contiene “padding: 0.5em;”, che tu potresti sostituire  
con “margin: 0.5em;” in .pagination a, ottenendo pressocché lo stesso  
risultato.

fidati, se ci aggeggi abbastanza puoi ottenere quasi qualunque  
effetto; se proprio devi fare qualcosa di strano, allora modifica gli  
helper. quel view\_helpers.rb a tutta prima sembra complicato, ma se  
cerchi, che so, span, trovi il metodo che disegna lo span; lo  
modifichi perché disegni ul, div o qualunque altra cosa ed è fatta;  
idem per i link.

in particolare, i link vengono scritti dal metodo page\_link:  
def page\_link(page, text, attributes = {})  
@template.link\_to text, url\_for(page), attributes  
end

e allora basta che fai:  
def page\_link(page, text, attributes = {})  
link = @template.link\_to text, url\_for(page), attributes  
“\<li class="pager-item"\>#{link}”  
end

ed è fatta.

a rischio di sembrare pedante, ripeto: modifica gli helper solo se  
veramente devi: vedrai che modificando lo stile riesci a fare tutto.

pietro

---

<div class="post-metadata">

**Author:** ![JellyBellyWeb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/c0e974/32.png) [@JellyBellyWeb](https://www.ruby-forum.com/u/JellyBellyWeb)\
**Post date:** [August 6, 2009, 2:45pm UTC](https://www.ruby-forum.com/t/modificare-css-will-paginate/173303/3 "2009-08-06T14:45:26Z")

</div>

Il giorno 06/ago/09, alle ore 13:59, Pietro G. ha scritto:

> potresti modificare gli helper, che trovi in  
> /vendor/plugins/will\_paginate/lib/will\_paginate/view\_helpers.rb;  
> tuttavia, perché?  
> immagino che il tuo scopo sia ottenere l’effetto visivo che usa  
> drupal, non il suo markup.

Il mio scopo era di fare entrambi! 😃  
Per quanto riguarda il copia e incolla mirato del css c’ero arrivato,  
ma non credevo che potessi assegnare lo stesso style all’elemento a e  
devo dire che mi sei stato di grandissimi aiuto!

> .pagination a {  
> padding: 2px 5px;  
> background:#dfedf7;  
> border:1px solid #90c2e1;  
> -moz-border-radius:2px;  
> -webkit-border-radius:2px;  
> }

La paginazione così è davvero bellissima! 😉

> a rischio di sembrare pedante, ripeto: modifica gli helper solo se  
> veramente devi: vedrai che modificando lo stile riesci a fare tutto.
> 
> pietro

Il problema è che la pagination di defaul non ha tutte le  
caratteristiche che vorrei.  
Quella di default non ha il bottone “First” e “Last”, ma soltando  
“Previus” e “Next”, poi non ha nemmeno la gestione dei “…”  
Per far questo credo proprio che si debba modificare l’helper giusto?  
Io dentro vendor/plugin non ho will\_paginate perchè ho installato la  
gem via sistema e non per il singolo progetto, ma ora ho eseguito un bel  
rake gems:unpack:dependencies  
e ora in vendor ho gems/will\_paginate con il suo bell’helper da  
modificare, ma come?  
Conoscete qualche guida alla personalizzazione di will\_paginate oppure  
mi sai essere di aiuto tu o altri?

Grazie ancora infinite!  
Adoro questa ml e la leggo sempre con molto interesse!

–  
JellyBellyWeb  
removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![JellyBellyWeb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/c0e974/32.png) [@JellyBellyWeb](https://www.ruby-forum.com/u/JellyBellyWeb)\
**Post date:** [August 6, 2009, 3:30pm UTC](https://www.ruby-forum.com/t/modificare-css-will-paginate/173303/4 "2009-08-06T15:30:31Z")

</div>

Il giorno 06 agosto 2009 14.44, JellyBellyWeb[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
ha scritto:

> Il problema è che la pagination di defaul non ha tutte le  
> caratteristiche che vorrei.  
> Quella di default non ha il bottone “First” e “Last”, ma soltando  
> “Previus” e “Next”, poi non ha nemmeno la gestione dei “…”

per “…” intendi quando ci sono tante pagine?

se sì, will\_paginate ce l’ha:

[http://www.uploadscreenshot.com/image/40599/3968636](http://www.uploadscreenshot.com/image/40599/3968636)

(non so quanto durerà lo screenshot, l’ho caricato sul primo risultato  
google per upload screenshot)

il tutto si regola tramite due opzioni, inner\_window e outer\_window,  
debitamente spiegati nell’help.

come vedi, anche se non c’è First e Last, la prima e l’ultima pagina  
sono sempre mostrate.

se ti serve che ci siano proprio un link First e un link Last,  
dovrebbe bastare una modifica molto semplice al metodo  
LinkRenderer::to\_html: subito prima della riga  
html = links.join(@options[:separator])

dovresti aggiungere in cima e in coda alla lista links i link per la  
prima e per l’ultima pagina rispettivamente; non dovrebbe essere  
complicatissimo, ma al momento non ho tempo per fare prove.

ti è proprio indispensabile?

può essere un ottimo esercizio didattico, per prendere familiarità con  
gli helper; infilare le mani fino al gomito nel codice altrui è anche  
un modo per acquisire confidenza, nel senso che alla fine ti rendi  
conto che sono solo istruzioni ruby, non c’è niente da temere.

tieni conto però che facendo modifiche non strettamente indispensabili  
a prodotti esterni rischi di legarti a una certa versione: l’indomani  
magari l’autore pubblica la nuova versione in cui è tutto diverso, e  
la tua modifica smette di funzionare.

pietro

---

<div class="post-metadata">

**Author:** ![JellyBellyWeb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/c0e974/32.png) [@JellyBellyWeb](https://www.ruby-forum.com/u/JellyBellyWeb)\
**Post date:** [August 6, 2009, 4:10pm UTC](https://www.ruby-forum.com/t/modificare-css-will-paginate/173303/5 "2009-08-06T16:10:19Z")

</div>

Il giorno 06/ago/09, alle ore 15:30, Pietro G. ha scritto:

> debitamente spiegati nell’help.  
> Grazie mille per la dritta, mi era proprio sfuggito quel pezzo della  
> documentazione! 😉

> prima e per l’ultima pagina rispettivamente; non dovrebbe essere  
> a prodotti esterni rischi di legarti a una certa versione: l’indomani  
> magari l’autore pubblica la nuova versione in cui è tutto diverso, e  
> la tua modifica smette di funzionare.
> 
> pietro

Purtroppo non sono riuscito a fare l’esercizio didattico… ☹  
Ho iniziato a fare delle prove, ma al momento del salvataggio, non me  
lo permette… credo per via del freezz… vorrà dire che installerò  
il plugin e smanetterò! 😃

Grazie ancora per l’aiuto!  
Ciao

–  
JellyBellyWeb  
removed\_email\_address@domain.invalid
