无法让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'
,都无济于事(我得到了LoadError
s)。我也尝试过register Kaminari::Helpers::SinatraHelpers
提到的here,也失败了。
我已经详细地关注了instructions,并且谷歌和StackOverflow一直无济于事。 This answer没有工作。我不禁想到我错过了一些容易的东西;我不是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'