Will_paginate umí využívat asociace
Vlado mě již dříve upozornil na plugin will_paginate, který umožňuje čistší a rychlejší implementaci stránkování, než je postup do Railsů zabudovaný. Standardní stránkování bylo ostatně z Edge Rails a tedy i budoucích verzí odstraněno, takže nějaký plugin budete potřebovat tak jako tak (pravda instalací classic_pagination máte staré chování zpět během vteřinky). Jako ideální úvod do používání will_paginate bych viděl příslušnou epizodu Railscastů.
To by nebylo nic tak převratného. Přepisoval jsem ale část ošklivého kódu v controlleru a konečně se dokopal k tomu si daný screencast prohlédnout a will_paginate nasadit. Chtěl jsem ale odstránkovat výsledek takovéto asociace:
class User < ActiveRecord::Base has_many :teams, :through => :memberships, :order => 'name'
A to proto, abych nemusel tuto logiku duplikovat jinde. Říkal jsem si, fungovat to nebude, ale za pokus nic nedám. Ale voilá:
@teams = @user.teams.paginate :page => params[:page]
funguje přesně tak, jsem potřeboval. Velmi příjemné (a suché). Stránkovacích pluginů je evidentně celá řada, úplně na ráně byly paginating_find a paginator. Nezkoušel jsem, někdo z vás ano?