2

編集all私はそれを理解したように見えます-私はSearchlogicへの呼び出しの後に paginate を呼び出さなければなりませんでした。

これらのツールの両方を使用して、ユーザーが連絡先を検索し、ページ分割されたリスト (または検索条件を入力しない場合はページ分割されたリスト全体) を返せるようにしようとしています。ただし、それらをチェーンする適切な方法がわからないため、エラーが発生しています。

これが私のコントローラーです:

class ContactsController < ApplicationController
  def index
    @search = Contact.search(params[:search]).paginate(:page => params[:page])
    @contacts, @contacts_count = @search.all, @search.count
  end
end

これにより、エラーが発生しますUndefined method 'all' for WillPaginatecontact_contact_contact..._pathおそらくデフォルトの「ページあたり」が20であるため、ビューは「連絡先」という単語を20回含むパスを探しているため、すべてを削除するとエラーが発生します。

私は何を間違っていますか?このページで検索、順序付け、ページネーションをすべて行いたいと思います。

4

1 に答える 1

6

これには私も戸惑いました。次のことを行います。

class ContactsController < ApplicationController
  def index
    @search = Contact.search(params[:search])
    @contacts = @search.paginate(:page => params[:page])
  end
end

ビューで @contacts.total_entries を呼び出して合計数を取得します (will_paginate は自動的に追加します)。

.paginate を呼び出すとすぐに、クエリがトリガーされます。したがって、@search を Searchlogic オブジェクトに設定していると思っていても、そうではありません。呼び出すことができるメソッド .all を持たない WillPaginate 配列に設定しています。

于 2010-01-12T19:48:56.150 に答える