Stránkování v Ruby on Rails – will_paginate + AJAX
by petrb on Oct.10, 2009, under Pluginy, Ruby on Rails
Mnoho lidí se ptá jak vytvořit stránkování pomocí AJAXu. I když se to nezdá je to velice jednoduché. Pokud nevíte jak se pracuje s pluginem will paginate, tak si přečtěte tento článek, budete to potřebovat :)
Nejdříve si musíme natáhnout v hlavičce potřebné soubory.
<%= javascript_include_tag :defaults, 'lowpro' %>
Jak už jste si všimli je potřeba stáhnout low pro knihovnu, kterou napsal Dan Webb. Toto rozšíření pro prototype lze stáhnout zde. Jakmile budete mít aktuální verzi, je potřeba ji nakopírovat do složky “public/javascript”. Poté si otevřete application.js z “public/javascript” složky a vložte do něj následující kód.
Event.addBehavior.reassignAfterAjax = true; Event.addBehavior({
'div.pagination a' : Remote.Link
})
Taktéž si můžete vytvořit jakýkoliv *.js soubor a vložit kód tam, ale pak je potřeba tento soubor z hlavičky zavolat spolu s lowpro.
Tak a teď máme nachystáno co budeme potřebovat a nyní jsme jen pár řádků od kýženého výsledku. V controlloreru si vybereme potřebná data a nastránkujeme pomocí will paginate, ale taky je potřeba zajistit odpověd na js request.
def index
@posts = Post.paginate(:all, :per_page => 10, :page => params[:page])
respond_to do |format|
format.html
format.js do
render :update do |page|
page.replace 'posts_box', :partial => [:posts];
end
end
end
end
Kód ve view (index.rhtml) by mohl vypadat následovně.
Nalezené články:
<%= render :partial => "posts" %>
------- #_posts.rhtml -------
<div id="post_box">
#zde vypiseme co chceme a nastránkujeme
<%= will_paginate(@posts) %>
</div>
Tak a to je všechno. :)
Petr Bobek
2 Komentáře pro tento článek
1 Trackback or Pingback for this entry
-
Stránkování v Ruby on Rails – Will_paginate - Ruby on Rails
October 10th, 2009 on 5:59 pm[...] dalším pokračování si ukážeme stránkování pomocí [...]
January 26th, 2010 on 12:43 pm
Díky za članek, stránkování bez AJAXu funguje skvěle, ale postup víše mi skončil na chybě:
Missing template symbols/_symbol.erb in view path C:/Data/Devel/LDB/app/views
Nemám teď možnost to víc zkoumat, ale kdybych na něco víc přišel, napíšu.
January 26th, 2010 on 12:48 pm
2Borland: Píše ti to, že ti tam chybí soubor. :) Kukni do app/view/symbols/ a tam by ti měl chybět soubor _symbols
To by mělo být tím.
Petan