将searchlogic与will_paginate一起使用

时间:2009-10-14 15:52:56

标签: ruby-on-rails will-paginate searchlogic

编辑看起来我想通了 - 我必须在Searchlogic调用all后调用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。删除全部会给我一个错误,因为视图正在寻找一个包含“联系人”一词20次的路径(例如contact_contact_contact..._path),大概是因为默认的“每页”为20。

我做错了什么?我想在这个页面上搜索,订购和分页。

1 个答案:

答案 0 :(得分: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。