Tagy: ajax
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