@@ -2,30 +2,39 @@ module Rails
2
2
module Pagination
3
3
protected
4
4
5
- def paginate ( options )
6
- collection = options [ :json ] || options [ :xml ]
5
+ def paginate ( options )
6
+ collection = options [ :json ] || options [ :xml ]
7
7
8
- block = Proc . new do |collection |
9
- links = ( headers [ 'Link' ] || "" ) . split ( ',' ) . map ( &:strip )
10
- url = request . original_url . sub ( /\? .*$/ , '' )
11
- pages = ApiPagination . pages_from ( collection )
8
+ collection = _paginate_collection ( collection )
9
+ options [ :json ] = collection if options [ :json ]
10
+ options [ :xml ] = collection if options [ :xml ]
12
11
13
- pages . each do |k , v |
14
- new_params = request . query_parameters . merge ( :page => v )
15
- links << %(<#{ url } ?#{ new_params . to_param } >; rel="#{ k } ")
16
- end
12
+ render options
13
+ end
17
14
18
- headers [ 'Link' ] = links . join ( ', ' ) unless links . empty?
19
- headers [ 'Total' ] = ApiPagination . total_from ( collection )
20
- end
15
+ def paginate_with ( collection )
16
+ respond_with _paginate_collection ( collection )
17
+ end
18
+
19
+ private
21
20
22
- collection = ApiPagination . paginate ( collection , params , &block )
21
+ def _paginate_collection ( collection )
22
+ block = Proc . new do |collection |
23
+ links = ( headers [ 'Link' ] || "" ) . split ( ',' ) . map ( &:strip )
24
+ url = request . original_url . sub ( /\? .*$/ , '' )
25
+ pages = ApiPagination . pages_from ( collection )
23
26
24
- options [ :json ] = collection if options [ :json ]
25
- options [ :xml ] = collection if options [ :xml ]
27
+ pages . each do |k , v |
28
+ new_params = request . query_parameters . merge ( :page => v )
29
+ links << %(<#{ url } ?#{ new_params . to_param } >; rel="#{ k } ")
30
+ end
26
31
27
- render options
32
+ headers [ 'Link' ] = links . join ( ', ' ) unless links . empty?
33
+ headers [ 'Total' ] = ApiPagination . total_from ( collection )
28
34
end
35
+
36
+ ApiPagination . paginate ( collection , params , &block )
37
+ end
29
38
end
30
39
end
31
40
0 commit comments