Hej, potrzebuję wygenerować linka do ostatniej strony w paginacji. Uzywam will_paginate. Na razie robię to dodając ?page=last do linka i w application_controllerze w before_filter mam metodę, która liczy odpowiednią wartość params[:page]. Czy może jest ładniejsza metoda?
Druga sprawa, to linkowanie wewnątrz strony. Obecnie robię to tak:
@slawosz: najpierw napisales: “potrzebuję wygenerować linka do ostatniej strony w paginacji” a ponizej: “mam na stronie głównej wyświetlić 5 ostatnio napisanych postów, z linkami do nich”.
Zdecyduj się co w końcu chcesz zrobić i napisz dokładnie o co chodzi
Chcę wyświetlić na stronie głównej linki do pięciu ostatnio dodanych postów. Jako, że jest to klasyczne forum, to posty wyświetlają się po x na stronie. Więc, aby wyświetlić dany post potrzebuję, by link prowadził do ostatniej strony wyświetlającej posty oraz, dodatkowo, strona się przewinęła do tego postu.
Mam nadzięję, że trochę mniej zagmatwałemteraz ;).
W kontrolerze, w metodzie która będzie wybierać 5 najnowszych postów musisz obliczyć ile stron z postami ma dany topic. Will_paginate to zrobi za Ciebie jeśli go odpowiednio wywołasz.
Ogólnie rzecz biorąc to możesz zrobić tak:
gdzie post to aktualny post z tej kolekcji 5 najnowszych postów a @posts to kolekcja powstała po wywołaniu #paginate, ew. WillPaginate::Collection.new
Jeśli chcesz gotowe rozwiązanie to wklej na gist’a kod: routes.rb, kontrolera, wszystkich modeli (Post/Topic) i widoku bo nie wiem jakie masz zależności pomiędzy Topic’iem a Post’em etc. żeby dokładnie napisać.