From bd6b61be88dfe6eb1ff1dcc5c17542d804a842c7 Mon Sep 17 00:00:00 2001 From: Yehuda Katz Date: Thu, 6 Aug 2009 19:52:11 -0300 Subject: Rename /base to /metal and make base.rb and metal.rb top-level to reflect their module locations --- actionpack/lib/action_controller/metal/renderer.rb | 77 ++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 actionpack/lib/action_controller/metal/renderer.rb (limited to 'actionpack/lib/action_controller/metal/renderer.rb') diff --git a/actionpack/lib/action_controller/metal/renderer.rb b/actionpack/lib/action_controller/metal/renderer.rb new file mode 100644 index 0000000000..572da451ff --- /dev/null +++ b/actionpack/lib/action_controller/metal/renderer.rb @@ -0,0 +1,77 @@ +module ActionController + module Renderer + extend ActiveSupport::Concern + + include AbstractController::Renderer + + def process_action(*) + self.formats = request.formats.map {|x| x.to_sym} + super + end + + def render(options) + super + self.content_type ||= begin + mime = options[:_template].mime_type + formats.include?(mime && mime.to_sym) || formats.include?(:all) ? mime : Mime::Type.lookup_by_extension(formats.first) + end.to_s + response_body + end + + def render_to_body(options) + _process_options(options) + + if options.key?(:partial) + _render_partial(options[:partial], options) + end + + super + end + + private + def _prefix + controller_path + end + + def _determine_template(options) + if options.key?(:text) + options[:_template] = ActionView::TextTemplate.new(options[:text], formats.first) + elsif options.key?(:inline) + handler = ActionView::Template.handler_class_for_extension(options[:type] || "erb") + template = ActionView::Template.new(options[:inline], "inline #{options[:inline].inspect}", handler, {}) + options[:_template] = template + elsif options.key?(:template) + options[:_template_name] = options[:template] + elsif options.key?(:file) + options[:_template_name] = options[:file] + elsif !options.key?(:partial) + options[:_template_name] = (options[:action] || action_name).to_s + options[:_prefix] = _prefix + end + + super + end + + def _render_partial(partial, options) + case partial + when true + options[:_prefix] = _prefix + when String + options[:_prefix] = _prefix unless partial.index('/') + options[:_template_name] = partial + else + options[:_partial_object] = true + return + end + + options[:_partial] = options[:object] || true + end + + def _process_options(options) + status, content_type, location = options.values_at(:status, :content_type, :location) + self.status = status if status + self.content_type = content_type if content_type + self.headers["Location"] = url_for(location) if location + end + end +end -- cgit v1.2.3 From 8534c5bf193c6a234d55116d520a54a1b634a93e Mon Sep 17 00:00:00 2001 From: Yehuda Katz Date: Fri, 7 Aug 2009 01:51:50 -0300 Subject: Start cleaning up partial path --- actionpack/lib/action_controller/metal/renderer.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'actionpack/lib/action_controller/metal/renderer.rb') diff --git a/actionpack/lib/action_controller/metal/renderer.rb b/actionpack/lib/action_controller/metal/renderer.rb index 572da451ff..5a458764ad 100644 --- a/actionpack/lib/action_controller/metal/renderer.rb +++ b/actionpack/lib/action_controller/metal/renderer.rb @@ -57,7 +57,7 @@ module ActionController when true options[:_prefix] = _prefix when String - options[:_prefix] = _prefix unless partial.index('/') + options[:_prefix] = _prefix unless partial.include?(?/) options[:_template_name] = partial else options[:_partial_object] = true -- cgit v1.2.3