Never been to DZone Snippets before?

Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world

ajax_pagination_links (See related posts)

Put in a helper somewhere, and use like this:
<%= ajax_pagination_links @client_pages, {:update => 'search_results', :params => {:search_query => @params[:search_query]} } %>

and just update the div your results (and the above line) are in.
       def ajax_pagination_links(paginator, options={})
         
         options.merge!(ActionView::Helpers::PaginationHelper::DEFAULT_OPTIONS) {|key, old, new| old}
         
         window_pages = paginator.current.window(options[:window_size]).pages
 
         return if window_pages.length <= 1 unless
           options[:link_to_current_page]
         
         first, last = paginator.first, paginator.last
         
         returning html = '' do
           if options[:always_show_anchors] and not window_pages[0].first?
             html << link_to_remote(first.number, :update => options[:update], :url => { options[:name] => first }.update(options[:params] ))
             html << ' ... ' if window_pages[0].number - first.number > 1
             html << ' '
           end
           
           window_pages.each do |page|
             if paginator.current == page && !options[:link_to_current_page]
               html << page.number.to_s
             else
               html << link_to_remote(page.number, :update => options[:update], :url => { options[:name] => page }.update(options[:params] ))
             end
             html << ' '
           end
           
           if options[:always_show_anchors] && !window_pages.last.last?
             html << ' ... ' if last.number - window_pages[-1].number > 1
             html << link_to_remote(paginator.last.number, :update => options[:update], :url => { options[:name] => last }.update( options[:params]))
           end
         end
       end

Comments on this post

canadaduane posts on Jun 17, 2005 at 03:49
Could you add some "code" and "/code" tags around this to tidy it up? It looks like a great snippet otherwise.
duncanbeevers posts on Jun 09, 2006 at 04:55
If your
ajax_pagination_links
call is inside the generated content, try

  def ajax_pagination_links(paginator, options={})

    options.merge!(ActionView::Helpers::PaginationHelper::DEFAULT_OPTIONS) {|key, old, new| old}

    # Name parameter must be nullified in order to make pagination links work when they embedded in the updated element
    options[:params].delete(options[:name])

Jac posts on Oct 31, 2006 at 14:44
Thank u very much........i was badly in need of it :-)
carlharroch posts on Jan 07, 2007 at 18:26
You could also add the rest of the options:

 link_to_remote(first.number, :update => options[:update], :url => { options[:name] => first }.update(options[:params] ), :loading => options[:loading], :complet => options[:complete])


/Carl
holonation posts on May 31, 2007 at 15:02
Thanks for this. It's working nicely with one problem: My controller side call to "paginate" uses the :order, :conditions, :include, and :per_page attributes. ajax_pagination_links picks up all attributes except for the :order one. How come? pagination_links picks up the :order attribute. Sorry I couldn't understand your code to propose a fix.
holonation posts on Jun 06, 2007 at 20:23
Disregard my May 31 comment. Bug was on my end. Sorry for pulluting the comments. Great feature. Thanks again.

You need to create an account or log in to post comments to this site.


Click here to browse all 4860 code snippets

Related Posts