aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/lib/action_controller')
-rw-r--r--actionpack/lib/action_controller/abstract/renderer.rb6
-rw-r--r--actionpack/lib/action_controller/new_base/renderer.rb27
2 files changed, 30 insertions, 3 deletions
diff --git a/actionpack/lib/action_controller/abstract/renderer.rb b/actionpack/lib/action_controller/abstract/renderer.rb
index dce411be92..537335aa0e 100644
--- a/actionpack/lib/action_controller/abstract/renderer.rb
+++ b/actionpack/lib/action_controller/abstract/renderer.rb
@@ -22,8 +22,12 @@ module AbstractController
end
def render(template = action_name)
+ self.response_body = render_to_string(template)
+ end
+
+ def render_to_string(template = action_name)
tmp = view_paths.find_by_parts(template.to_s, formats, _prefix)
- self.response_body = _render_template(tmp)
+ _render_template(tmp)
end
def _render_template(tmp)
diff --git a/actionpack/lib/action_controller/new_base/renderer.rb b/actionpack/lib/action_controller/new_base/renderer.rb
index 503450c246..eb3c8b808d 100644
--- a/actionpack/lib/action_controller/new_base/renderer.rb
+++ b/actionpack/lib/action_controller/new_base/renderer.rb
@@ -2,10 +2,33 @@ module ActionController
module Renderer
def render(options)
- if text = options[:text]
- self.response_body = text
+ _process_options(options)
+
+ self.response_body = render_to_string(options)
+ end
+
+ def render_to_string(options)
+ self.formats = [:html]
+
+ if options.key?(:text)
+ text = options.delete(:text)
+
+ case text
+ when nil then " "
+ else text.to_s
+ end
+ elsif options.key?(:template)
+ template = options.delete(:template)
+
+ super(template)
end
end
+ private
+ def _process_options(options)
+ if status = options.delete(:status)
+ response.status = status.to_i
+ end
+ end
end
end \ No newline at end of file