首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActiveResource分页

ActiveResource分页
EN

Stack Overflow用户
提问于 2011-11-26 07:56:52
回答 2查看 2.4K关注 0票数 2

在具有活动资源的API上实现分页的最佳方式是什么?我正在构建API和使用API的应用程序,所以我需要等式的两端。

我见过人们在ActiveResource中为他们想要的页面设置页眉(例如X-PERPAGE)。

任何建议都是很棒的。寻找最佳解决方案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-10 00:10:23

1)用下一个代码修补activeresource

代码语言:javascript
复制
module ActiveResource
  class Connection
    alias_method :origin_handle_response, :handle_response 
    def handle_response(response)
      Thread.current["active_resource_response_#{self.object_id}"]  = response
      origin_handle_response(response)
    end  

    def response
      Thread.current["active_resource_response_#{self.object_id}"] 
    end   
  end
end 

它将增加在执行rest方法后读取响应的可能性2)在服务器端使用kaminari,您可以执行下一步操作

代码语言:javascript
复制
@users = User.page(params[:page]).per(params[:per_page])
response.headers["total"] = @users.total_count.to_s
response.headers["offset"] = @users.offset_value.to_s
response.headers["limit"] = @users.limit_value.to_s
respond_with(@users)

3)再次在客户端使用kaminari

代码语言:javascript
复制
users = Users.all(:params=>params)
response = Users.connection.response
@users = Kaminari::PaginatableArray.new(
    users,
    {
      :limit => response['limit'].to_i ,
      :offset =>response['offset'].to_i ,
      :total_count => response['total'].to_i
    }   
)
票数 2
EN

Stack Overflow用户

发布于 2013-04-30 12:34:03

ActiveResource 4.0.0.beta1引入了ActiveResource::Collection,它(根据源代码中的文档)是一个处理解析索引响应的包装器。可以通过以下方式设置Post类来处理它:

代码语言:javascript
复制
class Post < ActiveResource::Base
  self.site = "http://example.com"
  self.collection_parser = PaginatedCollection
end

您可以将分页数据嵌入到您的API响应中,并使用ActiveResource::Collection检索它们。

有关如何使用它的详细说明,请参阅:http://javiersaldana.com/2013/04/29/pagination-with-activeresource.html

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8275223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档