aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller/mime_responds.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/lib/action_controller/mime_responds.rb')
-rw-r--r--actionpack/lib/action_controller/mime_responds.rb21
1 files changed, 15 insertions, 6 deletions
diff --git a/actionpack/lib/action_controller/mime_responds.rb b/actionpack/lib/action_controller/mime_responds.rb
index e4d1dbbccc..0b4c4b6793 100644
--- a/actionpack/lib/action_controller/mime_responds.rb
+++ b/actionpack/lib/action_controller/mime_responds.rb
@@ -107,11 +107,17 @@ module ActionController #:nodoc:
end
class Responder #:nodoc:
- default_block_format = %(Proc.new { render :action => "\#{action_name}%s", :content_type => Mime::%s })
- DEFAULT_BLOCKS = {}
- DEFAULT_BLOCKS[:html] = default_block_format % ['', 'HTML']
- DEFAULT_BLOCKS[:js] = default_block_format % ['.js.rjs', 'JS']
- DEFAULT_BLOCKS[:xml] = default_block_format % ['.xml.builder', 'XML']
+ default_block_format = <<-END
+ Proc.new {
+ @template.template_format = '%s'
+ render :action => "\#{action_name}", :content_type => Mime::%s
+ }
+ END
+
+ DEFAULT_BLOCKS = [:html, :js, :xml].inject({}) do |memo, ext|
+ default_block = default_block_format % [ext, ext.to_s.upcase]
+ memo.update(ext => default_block)
+ end
def initialize(block_binding)
@block_binding = block_binding
@@ -132,7 +138,10 @@ module ActionController #:nodoc:
if block_given?
@responses[mime_type] = Proc.new do
- eval "response.content_type = '#{mime_type.to_s}'", @block_binding
+ eval <<-END, @block_binding
+ @template.template_format = '#{mime_type.to_sym}'
+ response.content_type = '#{mime_type.to_s}'
+ END
block.call
end
else