diff options
| author | Yehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com> | 2009-05-21 14:51:29 -0700 | 
|---|---|---|
| committer | Yehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com> | 2009-05-21 14:51:29 -0700 | 
| commit | ad1c90de3a766d12a0906c7cf3772f3bc0e1b445 (patch) | |
| tree | 911b2e0b1daa62372f1c83c98640f6e968696c6f /actionpack/lib/action_controller/new_base | |
| parent | 2daac47d585c5b8f37e4749d6a9a3aea4b989bd0 (diff) | |
| download | rails-ad1c90de3a766d12a0906c7cf3772f3bc0e1b445.tar.gz rails-ad1c90de3a766d12a0906c7cf3772f3bc0e1b445.tar.bz2 rails-ad1c90de3a766d12a0906c7cf3772f3bc0e1b445.zip  | |
Added the :xml render option
Diffstat (limited to 'actionpack/lib/action_controller/new_base')
| -rw-r--r-- | actionpack/lib/action_controller/new_base/base.rb | 2 | ||||
| -rw-r--r-- | actionpack/lib/action_controller/new_base/render_options.rb | 30 | ||||
| -rw-r--r-- | actionpack/lib/action_controller/new_base/renderer.rb | 3 | 
3 files changed, 27 insertions, 8 deletions
diff --git a/actionpack/lib/action_controller/new_base/base.rb b/actionpack/lib/action_controller/new_base/base.rb index 6e1f92c45d..08ffafb27e 100644 --- a/actionpack/lib/action_controller/new_base/base.rb +++ b/actionpack/lib/action_controller/new_base/base.rb @@ -11,8 +11,8 @@ module ActionController      include ActionController::UrlFor      include ActionController::Redirector      include ActionController::Renderer -    include ActionController::RenderOptions      include ActionController::Renderers::Json +    include ActionController::Renderers::Xml      include ActionController::Layouts      include ActionController::ConditionalGet diff --git a/actionpack/lib/action_controller/new_base/render_options.rb b/actionpack/lib/action_controller/new_base/render_options.rb index e7ed2bd278..a9ac0e0a41 100644 --- a/actionpack/lib/action_controller/new_base/render_options.rb +++ b/actionpack/lib/action_controller/new_base/render_options.rb @@ -18,15 +18,23 @@ module ActionController      end    end -  module Renderers -    module Json +  module RenderOption +    extend ActiveSupport::DependencyModule + +    included do        extend ActiveSupport::DependencyModule -              depends_on RenderOptions -       -      included do -        _renderers << :json + +      def self.register_renderer(name) +        included { _renderers << name }        end +    end +  end + +  module Renderers +    module Json +      include RenderOption +      register_renderer :json        def _render_json(json, options)          json = ActiveSupport::JSON.encode(json) unless json.respond_to?(:to_str) @@ -35,5 +43,15 @@ module ActionController          self.response_body = json        end            end + +    module Xml +      include RenderOption +      register_renderer :xml + +      def _render_xml(xml, options) +        response.content_type ||= Mime::XML +        self.response_body  = xml.respond_to?(:to_xml) ? xml.to_xml : xml +      end +    end    end  end
\ No newline at end of file diff --git a/actionpack/lib/action_controller/new_base/renderer.rb b/actionpack/lib/action_controller/new_base/renderer.rb index 840168397d..2a52eedb59 100644 --- a/actionpack/lib/action_controller/new_base/renderer.rb +++ b/actionpack/lib/action_controller/new_base/renderer.rb @@ -79,9 +79,10 @@ module ActionController      end      def _process_options(options) -      status, content_type = options.values_at(:status, :content_type) +      status, content_type, location = options.values_at(:status, :content_type, :location)        response.status = status.to_i if status        response.content_type = content_type if content_type +      response.headers["Location"] = url_for(location) if location      end    end  end  | 
