怎么做康康的分页?

时间:2011-05-11 09:38:05

标签: ruby-on-rails pagination cancan

我希望用cancan进行分页,但是如何将它与诸如will_paginate之类的宝石进行整合并不明显。

理想情况下,cancan的load_resource将委托给will_paginate并添加额外条件。例如在cancan中我已经声明了访客用户

can :read, Post, :published => true

这是由load_resource自动处理的。但是,我想在所有这些结果中使用will_paginate页面。

任何想法。

此致

布拉德

2 个答案:

答案 0 :(得分:10)

这与kaminari https://github.com/amatsuda/kaminari

很简单

在我的PostsController中,我只是做

  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 

请注意,kaminari可以正常使用新的rails3 ActiveRelation框架 可以将方法链接在一起以构建范围。而CanCan也是 ActiveRelation友好,他们只是链接在一起。

答案 1 :(得分:6)

您也可以这样做:

class PostsController 

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