1

rails_admin を使用しています。特定のリソースに行くとき。URLを入力して

localhost:3000/admin/rule 

それよりも、このエラーが発生します。コードは次のとおりです。

scope = Rule.all
scope.page(1).per(2)

. 上記のコードは、 adapters フォルダーに配置された mongoid.rb という名前のファイルの rails_admin gem. に記述されています。完全なログは次のとおりです。

NoMethodError (undefined method `page' for #<Array:0xcea7408>):
mongoid (2.4.8) lib/mongoid/criteria.rb:385:in  `method_missing'
/home/usman/.rvm/gems/ruby-1.9.2-p290@system/bundler/gems/kaminari-809105ad782a/lib/kaminari/models/mongoid_extension.rb:11:in `page'
/home/usman/.rvm/gems/ruby-1.9.2-p290@system/bundler/gems/rails_admin-069819944cc9/lib/rails_admin/adapters/mongoid.rb:37:in `all'
/home/usman/.rvm/gems/ruby-1.9.2-p290@system/bundler/gems/rails_admin-069819944cc9/app/controllers/rails_admin/main_controller.rb:127:in `get_collection'
/home/usman/.rvm/gems/ruby-1.9.2-p290@system/bundler/gems/rails_admin-069819944cc9/app/controllers/rails_admin/main_controller.rb:39:in `list_entries'
/home/usman/.rvm/gems/ruby-1.9.2-p290@system/bundler/gems/rails_admin-069819944cc9/lib/rails_admin/config/actions/index.rb:30:in `block (2 levels) in <class:Index>'

このエラーを解決するにはどうすればよいですか?

4

4 に答える 4

4

私はしばらくの間この問題に何度も遭遇していて、今はMongoidを使用しています。RailsAdminでページを更新すると、修正される場合があります。

問題は、カミナリのフックが私の環境で初期化されていないことであることがわかりました。そのため、カミナリの拡張メソッドに依存するモデルでは、フックを使用できません。

カミナリのレールタイから次の行を取り出して、 rails_adminイニシャライザーの一番上に配置しました。

Kaminari::Hooks.init

今、物事は私のために働いているようです。ただし、ActiveSupportコールバックがそのコードを実行していない理由はわかりません。

于 2012-12-10T10:34:03.647 に答える
4

は を返すため、 でカミナリメソッドを呼び出すことはできません。ArrayRule.allArray

したがって、次のようにする必要があります。Rule.page(1).per(2)

カミナリの使用例とドキュメントは次のとおりです。

https://github.com/amatsuda/kaminari

于 2012-05-21T16:48:41.527 に答える
3

これを使って

Kaminari.paginate_array(Rule.all).page(params[:page])
于 2012-09-27T13:55:59.467 に答える
0

Kaderのソリューションは素晴らしいです!唯一のことは、それを機能させるために .per を追加する必要があることがわかりました。

Kaminari.paginate_array(Rule.all).page(params[:page]).per(PER_PAGE_RECORDS)
于 2015-03-14T23:15:56.300 に答える