Module: WillPaginate
- Defined in:
- lib/will_paginate.rb,
lib/will_paginate/finder.rb,
lib/will_paginate/version.rb,
lib/will_paginate/collection.rb,
lib/will_paginate/named_scope.rb,
lib/will_paginate/deserializer.rb,
lib/will_paginate/view_helpers.rb
Overview
You will paginate!
First read about WillPaginate::Finder::ClassMethods, then see WillPaginate::ViewHelpers. The magical array you’re handling in-between is WillPaginate::Collection.
Happy paginating!
Defined Under Namespace
Modules: Deprecation, Deserializer, Finder, NamedScope, VERSION, ViewHelpers Classes: Collection, InvalidPage, LinkRenderer
Class Method Summary collapse
-
.enable ⇒ Object
shortcut for
enable_actionpackandenable_activerecordcombined. -
.enable_actionpack ⇒ Object
hooks WillPaginate::ViewHelpers into ActionView::Base.
-
.enable_activerecord ⇒ Object
hooks WillPaginate::Finder into ActiveRecord::Base and classes that deal with associations.
- .enable_activeresource ⇒ Object
-
.enable_named_scope(patch = true) ⇒ Object
Enable named_scope, a feature of Rails 2.1, even if you have older Rails (tested on Rails 2.0.2 and 1.2.6).
Class Method Details
.enable ⇒ Object
shortcut for enable_actionpack and enable_activerecord combined
13 14 15 16 17 |
# File 'lib/will_paginate.rb', line 13 def enable enable_actionpack enable_activerecord enable_activeresource end |
.enable_actionpack ⇒ Object
hooks WillPaginate::ViewHelpers into ActionView::Base
20 21 22 23 24 25 26 27 28 |
# File 'lib/will_paginate.rb', line 20 def enable_actionpack return if ActionView::Base.instance_methods.include? 'will_paginate' require 'will_paginate/view_helpers' ActionView::Base.send :include, ViewHelpers if defined?(ActionController::Base) and ActionController::Base.respond_to? :rescue_responses ActionController::Base.rescue_responses['WillPaginate::InvalidPage'] = :not_found end end |
.enable_activerecord ⇒ Object
hooks WillPaginate::Finder into ActiveRecord::Base and classes that deal with associations
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/will_paginate.rb', line 32 def enable_activerecord return if ActiveRecord::Base.respond_to? :paginate require 'will_paginate/finder' ActiveRecord::Base.send :include, Finder # support pagination on associations a = ActiveRecord::Associations returning([ a::AssociationCollection ]) { |classes| # detect http://dev.rubyonrails.org/changeset/9230 unless a::HasManyThroughAssociation.superclass == a::HasManyAssociation classes << a::HasManyThroughAssociation end }.each do |klass| klass.send :include, Finder::ClassMethods klass.class_eval { alias_method_chain :method_missing, :paginate } end end |
.enable_activeresource ⇒ Object
50 51 52 53 54 55 56 57 58 59 |
# File 'lib/will_paginate.rb', line 50 def enable_activeresource unless defined?(ActiveResource::Base) $stderr.puts "Can't find ActiveResource. `gem install activeresource` to correct this." return end return if ActiveResource::Base.respond_to? :instantiate_collection_with_collection require 'will_paginate/deserializer' ActiveResource::Base.class_eval { include Deserializer } end |
.enable_named_scope(patch = true) ⇒ Object
Enable named_scope, a feature of Rails 2.1, even if you have older Rails (tested on Rails 2.0.2 and 1.2.6).
You can pass false for patch parameter to skip monkeypatching associations. Use this if you feel that named_scope broke has_many, has_many :through or has_and_belongs_to_many associations in your app. By passing false, you can still use named_scope in your models, but not through associations.
69 70 71 72 73 74 75 |
# File 'lib/will_paginate.rb', line 69 def enable_named_scope(patch = true) return if defined? ActiveRecord::NamedScope require 'will_paginate/named_scope' require 'will_paginate/named_scope_patch' if patch ActiveRecord::Base.send :include, WillPaginate::NamedScope end |