[quote=huba]Problem 1.
Chyba jest jakiś błąd w will_paginate albo w ActiveRecord bo jak użyję /strona/2 to idzie takie zapytanie do bazy SQLite:
SELECT COUNT(*) FROM photos WHERE photos.gallery_id = X LIMIT 15 OFFSET 15
To zapytanie jest bez sensu i pewnie dla tego dla stron > 1 nic się nie wyświetla.[/quote]
Zaraz, co jest w nim bez sensu? Zakładając X wyników na stronie (u Ciebie X=15), strona pierwsza to LIMIT X OFFSET 0, strona druga to LIMIT X OFFSET X. Strona trzecia to LIMIT X OFFSET 2X itd.
Nie rozumiem czemu budujesz urle ręcznie. Co Ci się nie spodobało w tych will_paginate’owych? Że page był doklejonym parametrem, tzn.
galeria/cośtam?page=2
?
COUNT nie zwraca żadnego wiersza tylko liczbę rekordów
W ogóle to nie powinieneś zdjęć pobierać przez Photo.where(…) tylko utworzyć relację
[code=ruby]class Gallery < ActiveRecord::Base
has_many :photos
end
class Photo < ActiveRecord::Base
belongs_to :gallery
end[/code]
i wtedy
def photos_ordered(page=1)
WillPaginate::ViewHelpers.pagination_options[:renderer] = 'CustomLinkRenderer'
photos.order(:ord).paginate(:per_page => 15, :page => page)
end
Ja bym na twoim miejscu zrezygnował narazie z własnego renderera. Spróbuj uruchomić na początku normalnie i jak będzie działać wtedy dodawać bajery
btw. skąd (i jak) pobierasz :ord? Możesz też wywalić order i dodać default_scope w Photo
[quote=zlw]1. używasz najnowszego will_paginate? jakiej wersji rails używasz?
2. spróbuj narazie wywalić CustomLinkRenderer
3. pokaż jakiś większy kawałek kodu (szczególnie modele, ale nie tylko)[/quote]
Wielkie dzięki Krzysiek za podpowiedź nr 1. gem update sqlite pomógł. Miałem 1.3.3 w 1.3.4 Problem 1 nie występuje.
Jeśli chodzi o Problem 2 to nie CustomRenderer nie jest tragiczny więc zostawiam to i prę dalej