简单的Sinatra分页

时间:2014-09-16 00:12:27

标签: ruby api sinatra

我正在使用API​​,我正试图在Sinatra中从头开始简单的分页

这是我的Sinatra路由 - 它执行API调用并使用limit:25参数返回25个事项并将结果数组存储在@matter中 -

 get '/matters' do
  @matter = client.matters.list(limit: 25)
  slim :matters
 end

我计划获得更多其他事项

get '/next_matters' do
  @matter = client.matters.next_page
  slim :matters
end

据说可以返回接下来的25件事 这是我在问题列表底部的瘦弱代码:

a href= "/next_matters" Next

这不起作用 - 它什么都不返回 - 我确信这是因为当我调用next_matters时,它不记得client.matters.list中的状态(限制:25)。

我需要一个辅助方法吗?

当我尝试:

  get '/matters' do
   @matter = client.matters.list(limit: 25)
   @matter2 = client.matters.next_page
  slim :matters
 end

我可以列出50个问题 - 有些我需要通过以前调用列表的事实

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以通过将偏移量作为查询的一部分传递给数据库来实现此目的。

即:

SELECT * FROM matters LIMIT 25;

然后在请求下一页时,你会这样做:

SELECT * FROM matters LIMIT 25 OFFSET 25;

因此,next_page方法需要接受至少1个参数;抵消。

伪代码:

def next_page(offset)
  # first page offset would be 0
  # second page offset would be 25
  # ...
  limit(25).offset(offset)
end