0

Ruby on Rails 3.2.9 とWillPaginate 3.0 ruby​​ gem を使用しています。インターネット上の多くのリソースで指摘されているように (詳細については読み続けてください)、「複雑な」関連付け/スコープ メソッドが関係している場合、WillPaginate gem を使用してオブジェクトをカウントすると、何かが期待どおりに機能しないようです。関連するビューで誤った量のページ リンクを生成します。私の場合、問題はthisthisに似ています。

私のモデルクラスArticleには次のものがあります。

has_many :category_associations
has_many :categories, :through => :category_associations

関連するコントローラーArticleControllersには次のものがあります。

@article
  .categories
  .scope_method(...)
  .order_method
  .search_method(...)
  .paginate(:page => 1, :per_page => 10)

インターネット上で提案されているソリューションは次のとおりです。

記事 1count : 解決策は、次のように条件を追加することです。

@article =
  <...> # Same as above.
  .paginate(:per_page => 4, :page => params[page], :count => {:group => 'articles.id'})

記事 2 : 解決策は、オブジェクトを手動でカウントし、total_entriesオプションを次のように設定することです。

# Note: The below code is performance less since a further SQL query is executed.

total_entries = ... # Pre-count the amount of objects, as needed (note: in this code line it is executed a SQL query to the database).

@article =
  <...> # Same as above.
  .paginate(:per_page => 4, :page => params[page], :total_entries => total_entries)

上記のすべての解決策を試してみましたが、WillPaginate gem に関連する「内部」の問題 (調整できるようにするため) と、問題を適切に解決するためにどのように進めるべきかを理解したいと思います (たとえば、「最善の」解決策は何ですか?上記以外の解決策はありますか?)。

たとえば、上記のような「ハッキングされた」ソリューションを使用することは避けたいのですがpaginate、「一般的な」方法でメソッドを使用したいと思います@articles.<...>.paginate(:per_page => 4, :page => params[page])

4

0 に答える 0