@@ -215,7 +215,7 @@ def respond_to(*mimes, &block)
215
215
raise ArgumentError , "respond_to takes either types or a block, never both" if mimes . any? && block_given?
216
216
217
217
if collector = retrieve_collector_from_mimes ( mimes , &block )
218
- response = collector . response
218
+ response = collector . response ( request . variant )
219
219
response ? response . call : render ( { } )
220
220
end
221
221
end
@@ -357,7 +357,7 @@ def respond_with(*resources, &block)
357
357
if collector = retrieve_collector_from_mimes ( &block )
358
358
options = resources . size == 1 ? { } : resources . extract_options!
359
359
options = options . clone
360
- options [ :default_response ] = collector . response
360
+ options [ :default_response ] = collector . response ( request . variant )
361
361
( options . delete ( :responder ) || self . class . responder ) . call ( self , resources , options )
362
362
end
363
363
end
@@ -390,7 +390,7 @@ def collect_mimes_from_class_level #:nodoc:
390
390
# is available.
391
391
def retrieve_collector_from_mimes ( mimes = nil , &block ) #:nodoc:
392
392
mimes ||= collect_mimes_from_class_level
393
- collector = Collector . new ( mimes , request . variant )
393
+ collector = Collector . new ( mimes )
394
394
block . call ( collector ) if block_given?
395
395
format = collector . negotiate_format ( request )
396
396
@@ -428,11 +428,9 @@ class Collector
428
428
include AbstractController ::Collector
429
429
attr_accessor :format
430
430
431
- def initialize ( mimes , variant = nil )
431
+ def initialize ( mimes )
432
432
@responses = { }
433
- @variant = variant
434
-
435
- mimes . each { |mime | @responses [ "Mime::#{ mime . upcase } " . constantize ] = nil }
433
+ mimes . each { |mime | send ( mime ) }
436
434
end
437
435
438
436
def any ( *args , &block )
@@ -446,19 +444,15 @@ def any(*args, &block)
446
444
447
445
def custom ( mime_type , &block )
448
446
mime_type = Mime ::Type . lookup ( mime_type . to_s ) unless mime_type . is_a? ( Mime ::Type )
449
- @responses [ mime_type ] ||= if block_given?
450
- block
451
- else
452
- VariantFilter . new ( @variant )
453
- end
447
+ @responses [ mime_type ] ||= block
454
448
end
455
449
456
- def response
450
+ def response ( variant )
457
451
response = @responses . fetch ( format , @responses [ Mime ::ALL ] )
458
- if response . is_a? ( VariantFilter ) || response . nil? || response . arity == 0
452
+ if response . nil? || response . arity == 0
459
453
response
460
454
else
461
- lambda { response . call VariantFilter . new ( @ variant) }
455
+ lambda { response . call VariantFilter . new ( variant ) }
462
456
end
463
457
end
464
458
0 commit comments