使用 will_paginate 或 Kaminari,您可以使用范围和 CanCanCan 进行分页。这里解释一下,如何用cancan进行分页?
但这仅说明了在您的 CanCan 能力使用哈希时如何执行此操作。如果您使用块,那将不起作用。我理解这是因为哈希转换为 SQL 语句。我似乎想不出用块语句来做这件事的方法。
例如:
can :read, Shipment do |shipment|
user.client_ids.include? shipment.client_id
end
如果客户在他们的客户列表中,用户只能查看货件。
@shipments = Shipment.ransack(params[:q]).result.uniq.paginate(page: params[:page]).select { |shipment| can? :show, shipment }
一种方法可以做到这一点并返回一组记录。但是 will_paginate 需要分页对象。
<%= will_paginate @shipments %>
will_paginate 会吐出来的。也许这会在 Kaminari 工作?
谢谢!