开发者

Using searchlogic with will_paginate

EDIT Looks like I figured it out - I had to call paginate after the call to all from Searchlogic.

I'm trying to use both of these tools to enable users to search contacts and return a paginated list (or the entire paginated list if they don't enter any search criteria). However I'm unsure of the proper way to chain them together, and what I'm trying is giving me errors.

Here is my controller:

class ContactsController < ApplicationController
  def index
    @search = Contact.search(params[:search]).paginate(:page => params[:page])
    @contacts, @contacts_count = @search.all, @sea开发者_如何学编程rch.count
  end
end

This gives me the error Undefined method 'all' for WillPaginate. Removing the all gives me an error because the view is looking for a path that has the word "contact" 20 times (e.g. contact_contact_contact..._path), presumably because the default "per page" is 20.

What am I doing wrong? I would like to have searching, ordering and pagination all on this page.


I was getting confused by this as well. You want to do the following:

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

In your view just call @contacts.total_entries to get the total count (will_paginate automatically adds that in).

As soon as you call .paginate it triggers the query. So when you even though you think you are setting @search to a Searchlogic object, you aren't. You are setting it to a WillPaginate array which has no method .all that you can call.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜