Skip to content

Instantly share code, notes, and snippets.

@jeroenr
Created July 19, 2012 09:34
Show Gist options
  • Save jeroenr/3142686 to your computer and use it in GitHub Desktop.
Save jeroenr/3142686 to your computer and use it in GitHub Desktop.
Make will_paginate generate ajax links
module ApplicationHelper
def paginate(collection, params= {})
will_paginate collection, params.merge(:renderer => RemoteLinkPaginationHelper::LinkRenderer)
end
end
source 'https://rubygems.org'
gem 'rails', '3.2.3'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
gem 'therubyracer', :platform => :ruby
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
gem 'will_paginate', '~> 3.0'
<div id="page_links">
<%= paginate @results %>
</div>
@pallavihegde1
Copy link

Works like charm 👍 Thanks a lot :)

@fschwahn
Copy link

The thing @tarmotalu posted won't work in vanilla will_paginate. It will only work if a custom renderer is used, my guess is that people for whom this works use will_paginate-bootstrap, which adds support for the link_options parameter.

@luisroadev
Copy link

thanks

Copy link

ghost commented May 2, 2017

Good job. Thanks

@nicozhang
Copy link

nicozhang commented Jun 20, 2017

It seems does not work in rails5. Some changes should be done:
params.permit(:controller, :page, :id, :page).merge(:renderer => RemoteLinkPaginationHelper::LinkRenderer).deep_symbolize_keys
I have read the willpaginate souce code:

  renderer = case options[:renderer]
  when nil
    raise ArgumentError, ":renderer not specified"
  when String
    klass = if options[:renderer].respond_to? :constantize then options[:renderer].constantize
      else Object.const_get(options[:renderer]) # poor man's constantize
      end
    klass.new
  when Class then options[:renderer].new
  else options[:renderer]
  end

If you don't convert the key to symbol, it will raise an error ":renderer not specified"

@steve981cr
Copy link

One line in my js.erb file (e.g., index.js.erb) and will_paginate started working with ajax. Here it is:
$('.pagination a').attr('data-remote', 'true');

@curquiza
Copy link

Thx steve981cr !!

@BrianVegeta
Copy link

Thanks to @tarmotalu

@ctncadi
Copy link

ctncadi commented Jan 29, 2020

Thanks to @tarmotalu

@vertden
Copy link

vertden commented Feb 29, 2020

Thanks a lot! It's really cool!!!

@yunusemredilber
Copy link

For those who want to use it with the bootstrap gem:

module RemoteLinkPaginationHelper
  class LinkRenderer < WillPaginate::ActionView::BootstrapLinkRenderer
    def link(text, target, attributes = {})
      attributes['data-remote'] = true
      super
    end
  end
end

@masroorhussainv
Copy link

One line in my js.erb file (e.g., index.js.erb) and will_paginate started working with ajax. Here it is: $('.pagination a').attr('data-remote', 'true');

Steve you're a rockstar!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment