1

我正在尝试在 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)

这会产生相同的错误。

有什么想法吗?

4

2 回答 2

3

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

启用扩展:

DB.extension(:pagination)

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

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

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

于 2013-12-16T09:24:55.503 回答
2

Kaminari的README没有将 Sequel 列为受支持的 ORM 之一。

您要么需要使用Sequel 分页插件,要么按照此要点制作您自己的 Sequel 扩展

于 2013-06-05T22:10:16.140 回答