我正在尝试在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)
产生相同的错误。
任何想法?
非常感谢帮助。谢谢。
答案 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 plugin或follow this gist to make your own Sequel extension。