2011-05-11 26 views
6

Cancan ile sayfalama yapmak istiyorum ama will_paginate gibi değerli taşlarla nasıl bütünleştirileceği açık değil.Cancan ile sayfalandırma nasıl yapılır?

İdeal olarak, cancan'ın load_resource'u, ek şartlar ekleyecektir. Mesela cancan'da misafir kullanıcılara

can :read, Post, :published => true 

bildirdim ve bu otomatik olarak load_resource tarafından ele alınır. Ancak, bu sonuçların tümünü sayfalara eklemeyi tercih ediyorum.

Herhangi bir fikir.

Selamlar

Brad

cevap

10

Bu benim PostsController içinde kaminari https://github.com/amatsuda/kaminari ile

yapmak basittir Sadece kaminari yeni raylar 3. ActiveRelation çerçevesi ile düzgün çalıştığını

before_filter :load_by_pagination, :only => :index 
    def load_by_pagination 
    @posts = Post.accessible_by(current_ability).order("published_date desc").page params[:page] 
    end 

Not yapmak , kapsamı oluşturmak için yöntemleri birbirine zincirlemek mümkündür. Ve CanCan da ActiveRelation dostu olduğu için ikisi de birlikte zincirleme. Ayrıca böyle bir şey yapabileceği

6

:

class PostsController 

    def index 
    @posts = @posts.page(params[:page])  
    ... 
+0

Evet, ama hiçbir şey nil için erişilebilir, kankan setleri @posts olduğunu ve dünya biter ... Ya da başka bir yolu yoktur o zaman olur? – pitosalas

+0

Bu, sayfalamadan önce veritabanından tüm yayınları çekmek istemediğiniz sürece bundan kaçınılmalıdır. –

İlgili konular