Ruby 如何使用will_paginate分页json结果

Ruby 如何使用will_paginate分页json结果,ruby,json,pagination,cursor,sinatra,Ruby,Json,Pagination,Cursor,Sinatra,我正在使用Sinatra、Ruby和Postgres。我想翻页(目前正在尝试will_paginate,但欢迎其他方法建议)结果 ruby代码是: get '/inplay' do results = DB["select distinct(concat(c.first,' ', c.last)) as candidate, c.id as id, s.shortname as shortname from candidates c, shortmembers sm, shortlists

我正在使用Sinatra、Ruby和Postgres。我想翻页(目前正在尝试will_paginate,但欢迎其他方法建议)结果

ruby代码是:

get '/inplay' do 
  results = DB["select distinct(concat(c.first,' ', c.last)) as candidate, c.id as id, s.shortname as shortname from candidates c, shortmembers sm, shortlists s where sm.short_id = s.list_id and c.id = sm.candidate_id"].map do |row|
         { :id => row[:id], :candidate => row[:candidate], :shortname=>row[:shortname] }
        end
    halt 200, results.to_json  
end 
而jquery在视图页面中是:

$(document).ready(function() {
alert("script");
$('#result').html('');
$.getJSON("/inplay", function(data) {
$.each( data, function( key, value ) {
$('#result').append('<tr><td style=\"background:#E3F6CE;\"><input type=\"checkbox\" id=\"case\" class=\"case\" value=' + this["id"] + '></td><td><a href=\"/edit/' + this["id"] + '\">' + this["candidate"] + '</a></td><td>' + this["shortname"] + '</td></tr>');
          });
    });
});
在ruby代码段中添加

.paginate(page.to_i, per_page.to_i)
它不再工作,当然也不会翻页

在我看来,我已经尝试过:

<%= will_paginate results %>

在ruby DB调用之后,我还包括了DB.extension(:pagination)

问题是:

  • 这种方法错了吗?分页可以很好地处理普通数据集,但不能处理json结果
  • 如果方法正确,我应该将代码段“.paginate(page.to_I.per_page.to_I)”粘贴到哪里?我尝试将它链接到.map和after.to_json,但没有成功
    我被卡住了。所有人都欣然接受了帮助

    在无尽的卷轴上有一幅图画。Railscasts确实值得订阅。谢谢,但我不认为这是我想要的,也是rails而不是Sinatra。所描述的技术适用于任何框架和语言,您可以轻松地将其应用于Sinatra。谢谢,问题是如何。。。?此外,我想首先,至少,看看我是否能使我的方法工作,并了解它的错误。你在使用什么ORM?我知道paginate支持的东西是有限的(而且我相当确定直接DB交互不受支持)。您可以尝试在SELECT语句中添加LIMIT和OFFSET来开始。
    <%= will_paginate results %>