我正在使用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个问题 - 有些我需要通过以前调用列表的事实
我该怎么做?
答案 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