2011-05-11 62 views
6

我正在尋找與cancan分頁,但它不明顯如何將它與諸如will_paginate等寶石集成在一起。如何做cancan分頁?

理想情況下,康康的load_resource將委託給will_paginate並添加額外條件。例如在cancan中,我聲明瞭訪客用戶

can :read, Post, :published => true 

並且這是由load_resource自動處理的。不過,我希望通過所有這些結果獲得will_paginate頁面。

任何想法。

問候

布拉德

回答

10

這是簡單的在我的PostsController與雷https://github.com/amatsuda/kaminari

我只是做

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 

注意,雷正常工作與新的Rails3中ActiveRelation框架所以 可以將方法鏈接在一起來構建範圍。而且CanCan也是 ActiveRelation友好的,它們都鏈接在一起。

6

你也可以做這樣的事情:

class PostsController 

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

是的,但後來好像什麼是可訪問的,康康舞套@posts到零和世界結束...或者是有另一種方式? – pitosalas 2013-01-29 21:28:26

+0

這應該被避免,除非你想在分頁之前從數據庫中提取所有@posts。 – 2013-04-28 18:12:17