valid_options << :actions unless in_action
unknown_option_keys = options.keys - valid_options
- raise ActionController::ActionControllerError,
- "Unknown options: #{unknown_option_keys.join(', ')}" unless
- unknown_option_keys.empty?
+ unless unknown_option_keys.empty?
+ raise ActionController::ActionControllerError,
+ "Unknown options: #{unknown_option_keys.join(', ')}"
+ end
options[:singular_name] ||= ActiveSupport::Inflector.singularize(collection_id.to_s)
options[:class_name] ||= ActiveSupport::Inflector.camelize(options[:singular_name])
# These methods become class methods on any controller
module ClassMethods
- # Creates a +before_filter+ which automatically paginates an Active
+ # Creates a +before_action+ which automatically paginates an Active
# Record model for all actions in a controller (or certain actions if
# specified with the <tt>:actions</tt> option).
#
def paginate(collection_id, options = {})
Pagination.validate_options!(collection_id, options, false)
module_eval do
- before_filter :create_paginators_and_retrieve_collections
+ before_action :create_paginators_and_retrieve_collections
OPTIONS[self] ||= {}
OPTIONS[self][collection_id] = options
end
end
end
+ protected
+
def create_paginators_and_retrieve_collections #:nodoc:
Pagination::OPTIONS[self.class].each do |collection_id, options|
next if options[:actions] && !options[:actions].include?(action_name)
collection.offset(paginator.current.offset).limit(options[:per_page])
end
- protected :create_paginators_and_retrieve_collections,
- :count_collection_for_pagination,
- :find_collection_for_pagination
+ private
def paginator_and_collection_for(_collection_id, options) #:nodoc:
klass = options[:class_name].constantize
[paginator, collection]
end
- private :paginator_and_collection_for
-
# A class representing a paginator for an Active Record collection.
class Paginator
include Enumerable
1
else
q, r = @item_count.divmod(@items_per_page)
- r == 0 ? q : q + 1
+ r.zero? ? q : q + 1
end
end