Kaminari 寻呼机不能与 Sinatra 和 Mongoid 一起使用?

Kaminari pager not working with Sinatra and Mongoid?

无法让 Kaminari 与 Sinatra 和 Mongoid 一起工作。我收到此错误:

NoMethodError at /api/events
undefined method `page' for #<Mongoid::Criteria:0x007fccb7828c38>

这是获取错误的最少代码:

Gemfile

source "https://rubygems.org"
gem 'mongoid'
gem 'sinatra'
gem 'kaminari-mongoid'
gem 'kaminari-sinatra'

server.rb

require 'mongoid'
require 'sinatra'

class Event
  include Mongoid::Document
end

get '/events' do
  Event.desc(:id).page(params[:page]).per(10)
end

我已经尝试了 require 'kaminari'require 'kaminari-sinatra'require 'kaminari-mongoid',但都无济于事(我得到 LoadErrors)。我也试过 register Kaminari::Helpers::SinatraHelpers 提到的 here,但也失败了。

我跟进了 instructions in detail, and have scoured Google and Whosebug to no avail. 没用。我忍不住想我错过了一些简单的东西;我不是 Ruby 老手。我的直觉是它与 Bundler 有关。有什么想法吗?

我运行也成问题了。不幸的是,kaminari-mongoid 具有 rails 依赖性(您可以在此处查看 gemspec 文件:https://github.com/kaminari/kaminari-mongoid/blob/master/kaminari-mongoid.gemspec)。因此,不可能同时使用 kaminari-sinatra 和 kaminari-mongoid。

这解决了我的问题。 https://github.com/ajsharp/mongoid-pagination。将它添加到您的 Gemfile 并使用 Bundler 安装。

在您的 app.rb 文件中,require 'mongoid-pagination'