Ruby on Rails

Tagy: prototype

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

3 komentářů :, , , více zde...

Nemůžete něco najít?

Použijte formulář a zkuste štěstí:

Stále nenacházíte co jste hledali? Zkuste nechat komentář u článku!

Oblíbené blogy!

Archiv

Všechny články, chronologicky...