Permalink
Browse files

Delegate formats to the controller

  • Loading branch information...
1 parent 2060977 commit 8fbbdda52634991b047b7567fe3a8ec7c9a6c558 Carlhuda committed Mar 1, 2010
Showing with 27 additions and 2 deletions.
  1. +23 −2 actionpack/lib/action_view/base.rb
  2. +4 −0 actionpack/lib/action_view/helpers/prototype_helper.rb
@@ -186,12 +186,21 @@ def config=(config)
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 @@ def reset_formats(formats)
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
@@ -182,10 +182,14 @@ class JavaScriptGenerator #:nodoc:
def initialize(context, &block) #:nodoc:
context._evaluate_assigns_and_ivars
@context, @lines = context, []
+ old_formats = @context.formats
+ @context.reset_formats([:js, :html]) if @context
include_helpers_from_context
@context.with_output_buffer(@lines) do
@context.instance_exec(self, &block)
end
+ ensure
+ @context.reset_formats(old_formats) if @context
end
private

0 comments on commit 8fbbdda

Please sign in to comment.