2011-10-28 42 views
3

爲什麼Post.page(1).total_pages導致:理解將分頁範圍/關係

Post.page(1).total_pages 
undefined local variable or method `total_pages' for #<ActiveRecord::Relation:0x00000006a95230> 

Post.scoped.page(1).total_pages 

工作正常。奇怪的是,

Post.paginate(:page => 1).total_pages 

工作正常。我查看了Github上的代碼(https://github.com/mislav/will_paginate/blob/master/lib/will_paginate/active_record.rb),我可以看到paginate的工作原理(因爲它首先調用限制......它返回一個活動的記錄關係,非常類似於scoped)。我有事情做與此代碼

rel = scoped.extending(RelationMethods) 

我想我不明白的活動記錄關係,限制了收益與scoped.extending(RelationMethods)之間的這些差別的感覺。有任何想法嗎?

+0

這樣做的工作:'Post.page(1).all.total_pages' – apneadiving

+0

你使用的是什麼版本的Rails和will_paginate?我無法複製這個。 –

+0

@apneadiving no,仍然得到未定義的方法。 – davekaro

回答

1

這隻發生在使用rails_admin gem時。它可以在使用will_paginate 3.0.2的新Rails 3.1.1應用程序中正常工作。

Rails管理員可能正在對頁面方法做些什麼,但我不確定究竟是什麼。

+0

有趣,謝謝你讓我們更新。 –

+0

作爲最終更新,rails_admin包含分頁的kaminari gem。所以,不知何故,這是干擾will_paginate。每個項目的Github問題都有一些提到不完美的工作,所以我剛剛決定在我的項目中使用kaminari。 – davekaro