Paginator, habtm

czesc

Mam problem z zastosowaniem klasy Paginator.

Wszystko jest w porzadku jezeli mam taki zapis:

(po krotce: w tabeli jest np. 18 wpisow, 6 pojawia sie na stronie, 3 aktywne linki do podstron - w tym przykladzie Paginator dziala bez zarzutu)

[code]__controller:

def entries_listing
@entry_pages = Paginator.new self, Entry.count, 6, params[:page]
@entries = Entry.find_all_entries(@entry_pages)
end[/code]

[code]__model:

def self.find_all_entries(a)
find :all,
:order => ‘quality DESC’,
:limit => a.items_per_page,
:offset => a.current.offset
end[/code]
(problem pojawia sie, gdy stosuje :include oraz :conditions, korzystam tutaj z habtm: Entry has_and_belongs_to_many :categories, Category has_and_belongs_to_many :entries,
probuje wyciagnac z bazy wszystkie wpisy, ktore sa przyporzadkowane do okreslonej kategorii

[code]__controller:

def entries_listing
@category_name = params[:category_name]
@entry_pages = Paginator.new self, Entry.count, 6, params[:page]
@entries = Entry.find_all_entries(@entry_pages, @category_name)
end[/code]

[code]__model:

def self.find_all_entries(a, b)
find :all,
:order => ‘quality DESC’,

     :include => :categories,
     :conditions => ['categories.name = ?', b],

     :limit => a.items_per_page,
     :offset => a.current.offset

end[/code]
(no i teraz Paginator zawodzi, pojawiaja sie 3 linki do podstron (1-podstrona, 2-podstrona, 3-podstrona) - z tymże tylko pierwszy link dziala, dwa pozostale nie dzialaja - co jest oczywiste bo tyle wpisow o danej kategorii nie ma w bazie - ale dlaczego w ogole pojawiaja sie podstrony 2 i 3?

na pierwszy rzut oka dziala to tak:

pobierane sa wszystkie wpisy :all (Entry - jest ich 18), Paginator robi swoje (3 podstrony po 6 wpisow i wywala to na strone), ale jest warunek :conditions => [‘categories.name = ?’, b] i tu zaczyna sie problem …

Obecnie Paginator rails jest zdeprecjonowany. Sprawdź:
http://plugins.require.errtheblog.com/browser/will_paginate/README
Jest zalecany na rails wiki
http://wiki.rubyonrails.org/rails/pages/PaginationHelper

Jeszcze nie miałem okazji korzystać ale sądze, że może cię interesować następujący fragment :slight_smile: :

[code]Use a paginate finder in the controller:

@posts = Post.paginate_by_board_id @board.id, :page => params[:page]

Yeah, +paginate+ works just like +find+ – it just doesn’t fetch all the
records. Don’t forget to tell it which page you want, or it will complain!
Read more on WillPaginate::Finder::ClassMethods.[/code]

Dzięki piachoo za podpowiedz!