Sinatra,Kaminari与SEQUEL和postgres的分页问题

时间:2013-06-05 10:37:49

标签: sinatra kaminari sequel

我正在尝试在Sinatra上使用kaminari分页数据集。

在我的Gemfile中我有

source "https://rubygems.org"
gem 'sinatra'
gem 'thin'
gem 'pg'
gem 'kaminari', :require => 'kaminari/sinatra'

红宝石代码是:

dataset = DB[:candidates] 
get '/candidate' do

     @items = dataset.order(:id).page(params[:page]).per(5)
     erb :candidate
end

,错误信息为:

NoMethodError at /candidate
undefined method `page' for #<Sequel::Postgres::Dataset:0x94a6808>

    file: app.rb
    location: block in <main>
    line: 25

我被困住了。我也尝试will_paginate同样的沮丧和失败。

我的第一个问题是:查询是否正确?我也尝试过:

@items = dataset.order("id").page(:page=>params[:page]).per(5)

产生相同的错误。

任何想法?

非常感谢帮助。谢谢。

2 个答案:

答案 0 :(得分:3)

如果其他人遇到这个问题,你可以按照以下方式在Sequel中进行分页,而不需要任何额外的宝石:

启用扩展程序:

DB.extension(:pagination)

使用分页扩展名(根据问题示例):

page = Integer(params[:page]) rescue 1
@items = dataset.order(:id).paginate(page, 5)

然后由你的视图逻辑来呈现页面链接。

答案 1 :(得分:2)

README for Kaminari未将续集列为受支持的ORM之一。

您需要使用Sequel pagination pluginfollow this gist to make your own Sequel extension