From 8fbbdda52634991b047b7567fe3a8ec7c9a6c558 Mon Sep 17 00:00:00 2001 From: Carlhuda Date: Mon, 1 Mar 2010 14:10:53 -0800 Subject: Delegate formats to the controller --- actionpack/lib/action_view/base.rb | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'actionpack/lib/action_view/base.rb') diff --git a/actionpack/lib/action_view/base.rb b/actionpack/lib/action_view/base.rb index a61017ae11..2d2b53a6ce 100644 --- a/actionpack/lib/action_view/base.rb +++ b/actionpack/lib/action_view/base.rb @@ -186,12 +186,21 @@ module ActionView #:nodoc: extend ActiveSupport::Memoizable - attr_accessor :base_path, :assigns, :template_extension, :formats + attr_accessor :base_path, :assigns, :template_extension attr_internal :captures def reset_formats(formats) - @formats = formats + old_formats, self.formats = self.formats, formats + reset_hash_key + yield if block_given? + ensure + if block_given? + self.formats = old_formats + reset_hash_key + end + end + def reset_hash_key if defined?(AbstractController::HashKey) # This is expensive, but we need to reset this when the format is updated, # which currently only happens @@ -200,6 +209,18 @@ module ActionView #:nodoc: end end + def formats + controller ? controller.formats : @formats + end + + def formats=(val) + if controller + controller.formats = val + else + @formats = val + end + end + class << self delegate :erb_trim_mode=, :to => 'ActionView::Template::Handlers::ERB' delegate :logger, :to => 'ActionController::Base', :allow_nil => true -- cgit v1.2.3