Podwójna paginacja - jak zrobić?

Mam galerię, w której się zdjęcia dzielą na strony. Na stronie 1 jest np. 5 zdjęć, na drugiej kolejne 5 itp.
Mam też paginację, która pozwala przełączać między tymi stronami.
Coś w tym stylu:

@photos = @gallery.photos.paginate :all, :page => params[:photo_page], :order => ‘created_at DESC’, :per_page => 5

Zdjęcia ładuję ajaxem przez page.replace, a paginacja działa normalnie, czyli odświeżając całą stronę.
Chcę jednak dodać jeszcze jedną paginację, która w partialu photo (który jest podmieniany jak się kliknie na thumbnaila) wyświetla “<< poprzednie zdjęcie” i “następne zdjęcie >>” i nie mam pomysłu jak to zrobić.
Mogę zrobić albo jedną paginację, albo drugą. Z obiema jestem w kropce.

Nie wiem czy dobrze rozumiem, ale masz pieć fotek na stronie i te strony stronicujesz warunkiem który podałeś? Dodatkowo chciałbyś stronnicować te pięć obrazków, które są załadone na stronie, gdy się je powiększy? Jeśli tak, to to nie jest stronicowane, bo masz już ich wszystkie dane załadowane. Zrób to po prostu JavaScriptem, który zmienia src dla obrazka który jest powiększony.

Linki paginacji możesz też w łatwy sposób zmienić na ajaksowe, żeby nie trzeba było przeładowywać całej strony. Tylko wtedy musisz też akcje zrobić ajaksowo. Więc o łatwej zamianie linków paginacji na ajaksowe zapytania zobacz np. tutaj http://kubionrails.blogspot.com/2009/07/ajax-i-stronicowanie-willpaginate.html

Tak, tylko co w takim razie kiedy w tym tzw. “indywidualnym stronicowaniu” chciałbym przeskoczyć z piątego obrazka na szósty?

Wiesz co, wydaj mi się że nigdy i że by to było zgodne z konwencją i nikomu by nie przeszkadzało. na stronie masz pięć obrazków, to w ich obrębie się poruszasz. Jak dla mnie jest to naturalne.

Jednak jak chcesz, żeby dało się iść do szóstego obrazka, to wtedy ajaksem wywołujesz akcję, w której sobie stronicujesz je po jednym na stronę. Tylko teraz trzeba by zmienić chyba też stronę w tym pięciostronowym stronnicowaniu. Aby to zrobić chyba wystarczy że będziesz do tej akcji przekazywał dwa argumenty:

  • strona z powiększonym obrazkiem, która ma być wyświetlona
  • strona z pięcioma obrazkami, która jest obecnie wyświetlona

Potem w akcji sprawdzasz, czy obrazek ze strony z powiększonym obrazkiem znajduje się na aktualnej stroniez pięcioma. Jak nie, to podmieniasz aktualną stronę z pięcioma na kolejną (tą z [powiększonym obrazkiem)