如何使用will_paginate对json结果进行分页

时间:2013-10-05 07:29:30

标签: ruby json pagination cursor sinatra

我正在使用Sinatra,Ruby和Postgres。我想要页面(目前正在尝试使用will_paginate,但欢迎使用替代方法建议)结果。

红宝石代码是:

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>');
          });
    });
});

这很好用,可以生成一张漂亮的桌子。问题是我包括:

page = params.fetch "page", 1
per_page = params.fetch "per_page", 10

在ruby代码段中添加

.paginate(page.to_i, per_page.to_i)

它不再起作用,当然也不会页面。

在我尝试的视图中:

<%= will_paginate results %>

我还在ruby数据库调用之后立即包含了DB.extension(:pagination)。

问题是:

  1. 方法有误吗?分页适用于普通数据集,但不适用于json结果。
  2. 如果方法是正确的,我在哪里粘贴片段“.paginate(page.to_i.per_page.to_i)”?我试过在.map之后和.to_json之后链接它没有成功。
  3. 我被困住了。所有的帮助都高兴地收到了。

0 个答案:

没有答案