2016-05-24 4 views
1

おそらく、多くの構成が必要ではありません。docs宝石は機能していないようです。関連コード:SinatraとMongoidでKaminariページネーションの宝石を使用するには?

Gemfile:

source 'https://rubygems.org' 

ruby '2.2.4' 

gem 'sinatra' 
gem 'thin' 
gem 'slim' 
gem 'json' 
gem 'mongoid' 
gem 'kaminari' 

web.rb:

require 'sinatra' 
require 'json' 
require 'mongoid' 
require 'kaminari' 

# Mongoid class 
class Affiliate 
    include Mongoid::Document 
    field :name, type: String 
end 

# MongoDB connection info and whatnot 
Mongoid.load!('mongoid.yml', :development) 

get '/kaminari' do 
    puts Affiliate.page(1).count 
end 

エラー:

NoMethodError - undefined method `page' for Affiliate:Class

+0

最初に、あなたがリンクしたドキュメントでは、KaminariをSinatraと使用するにはkaminari/sinatra "を必要とする必要があると言います。 –

答えて

1

エラーメッセージは、ページクラスをすることはできません述べています。また、ページ分割されたデータセットにcountを呼び出すことは正しくはありません。その代わりに、まず選択基準をクラスに追加して、結果をページングしてみてください。 Mongoid、例に関しては次のようになります。

@paginated_users = User.where(:age.gte => 10).page(10) 

デフォルトでは、雷はページあたり25の項目を返し、あなたは確認して、

@paginated_users = User.where(:age.gte => 10).page(10).per(5) 

最後に、そのようper(desired number of items per page)方法を追加していることを変更することができます<%= paginate @paginated_users %>(ビュー内でページ設定するデータセットを含むweb.rbで宣言された同じ変数名)を、対応するビューファイルに追加します。

関連する問題