编辑看起来我想通了 - 我必须在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。
我做错了什么?我想在这个页面上搜索,订购和分页。
答案 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。