will_paginate和SEQUEL分页结果

时间:2013-06-18 01:02:24

标签: ruby sinatra sequel pg

我正在使用sinatra,sequql和postgresql。

到目前为止,我有:

require 'will_paginate'
require 'will_paginate/sequel'
require 'will_paginate/collection'
require 'will_paginate/version'
require 'sequel/extensions/pagination'

红宝石代码是:

get '/candidate' do
     @items = DB[:candidates].order(:id).extension(:pagination).paginate(1, 10)
     erb :candidate
end

在视图中:

<%= will_paginate @items %>

我在查询上尝试了多种变体来使分页工作,所有这些都以失败告终。 以下按要求生成10行的页面,但在单击第2页时返回错误消息。

我尝试过包括和不包含续集扩展分页以及&#34; will_paginate&#34;的创建者。坚持认为他们无论如何都可以一起工作。

此外,根据其他人的建议,我尝试过:

get '/candidate' do
  @items = DB[:candidates].order(:id).paginate(:page => params["page"], :per_page => 10)
  erb :candidate
end

get '/candidate' do
  page = params.fetch "page", 1
  per_page = params.fetch "per_page", 10
  @items = DB[:candidates].order(:id).paginate(:page => page, :per_page => per_page)
  erb :candidate
end

既不起作用。我得到一个错误,基本上说'#34;错误的参数数量(1为2)&#34;。

有没有人有使用SEQUEL成功分页结果的经验?感谢所有的帮助。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。 paginate方法不需要:page和:per_page参数。 https://github.com/jeremyevans/sequel/blob/master/lib/sequel/extensions/pagination.rb

出于某种原因,抓取对我来说也不起作用。我最终使用了:

page = params[:page].to_i
page = 1 unless page > 0
@notes = DB[:notes].extension(:pagination).paginate(page, 20)