Module: PagedScopes::Resources

Defined in:
lib/paged_scopes/resources.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



22
23
24
25
26
# File 'lib/paged_scopes/resources.rb', line 22

def self.included(base)
  base.class_eval do
    alias_method_chain :resources, :paged
  end
end

Instance Method Details

#resources_with_paged(*entities, &block) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/paged_scopes/resources.rb', line 3

def resources_with_paged(*entities, &block)
  options = entities.extract_options!
  if page_options = options.delete(:paged)
    resources_without_paged(*(entities.dup << options), &block)
    page_options = {} unless page_options.is_a? Hash
    page_name = page_options.delete(:name)
    page_options.slice!(:as, :name)
    page_options.merge!(:only => :none)
    preserved_options = ActionController::Resources::INHERITABLE_OPTIONS + [ :name_prefix, :path_prefix ]
    with_options(options.slice(*preserved_options)) do |map|
      map.resources_without_paged(page_name || :pages, page_options) do |page|
        page.resources(*(entities.dup << { :only => :index }))
      end
    end
  else
    resources_without_paged(*(entities << options), &block)
  end
end