2010-05-01 4 views
5

Używam standardu will_paginate, ale wyświetla ona tylko elementy sterujące paginacją (< 1 2> itd.), Gdy wyświetlana jest więcej niż jedna strona. Zwykle jest to pożądane, ale chcę kontrolować paginację (dla spójności interfejsu użytkownika i obejść irytujące dziwactwo CSS w systemie, nad którym pracuję) nawet wtedy, gdy jest tylko jedna strona do wyświetlenia (pokazując < 1 >).Pokazywanie stronicowania za pomocą tylko jednej strony przy użyciu funkcji will_paginate

Czy to możliwe?

Odpowiedz

5

Domyślna will_paginate pomocnik wraca nil gdy jest tylko jedna strona, więc można zrobić coś takiego:

<%= will_paginate(@records) || your_single_page_state_html %> 
+1

to czuje się trochę brudny do mnie - być może dlatego, że musi być powtarzany dla każdej strony to ma paginację. Niestety jest to naprawdę jedyne dobre rozwiązanie. WillPaginate podejmuje decyzję o renderowaniu w oparciu o 'WillPaginate :: ViewHelpers.total_pages_for_collection', którego nie można zmienić bez negatywnego wpływu na zachowanie wtyczki. Domyślam się, że jeśli chcesz zrobić to dla wielu stron w paginacji, możesz wyodrębnić go do metody pomocniczej: 'def paginate_always (records); will_paginate (records) || some_html; koniec'. –

+0

To jest czystszy sposób, aby to zrobić - wielkie dzięki! :) –

Powiązane problemy