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 WillPaginate。删除 all 会给我一个错误,因为视图正在寻找包含 20 次“联系人”一词的路径(例如contact_contact_contact..._path),大概是因为默认的“每页”是 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 对象,您也不是。您将它设置为一个 WillPaginate 数组,该数组没有您可以调用的方法 .all 。

于 2010-01-12T19:48:56.150 回答