mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Reinstate Base#render_to_string. Introduce AbstractController#render_to_string which stringifies render_to_body.
This commit is contained in:
@@ -20,7 +20,7 @@ module AbstractController
|
||||
self.response_body = render_to_body(options)
|
||||
end
|
||||
|
||||
# Raw rendering of a template.
|
||||
# Raw rendering of a template to a Rack-compatible body.
|
||||
# ====
|
||||
# @option _prefix<String> The template's path prefix
|
||||
# @option _layout<String> The relative path to the layout template to use
|
||||
@@ -33,6 +33,16 @@ module AbstractController
|
||||
_render_template(template, options)
|
||||
end
|
||||
|
||||
# Raw rendering of a template to a string.
|
||||
# ====
|
||||
# @option _prefix<String> The template's path prefix
|
||||
# @option _layout<String> The relative path to the layout template to use
|
||||
#
|
||||
# :api: plugin
|
||||
def render_to_string(options = {})
|
||||
Rack::Utils.body_to_s(render_to_body(options)).to_ary.join
|
||||
end
|
||||
|
||||
def _render_template(template, options)
|
||||
_action_view._render_template_with_layout(template)
|
||||
end
|
||||
|
||||
@@ -306,9 +306,9 @@ module ActionController
|
||||
(name.is_a?(String) ? name.sub(/^#{controller_path}\//, '') : name).to_s
|
||||
end
|
||||
|
||||
# Renders according to the same rules as <tt>render</tt>, but returns the result in a string instead
|
||||
# of sending it as the response body to the browser.
|
||||
def render_to_string(options = nil, &block) #:doc:
|
||||
# Same rules as <tt>render</tt>, but returns a Rack-compatible body
|
||||
# instead of sending the response.
|
||||
def render_to_body(options = nil, &block) #:doc:
|
||||
render(options, &block)
|
||||
response.body
|
||||
ensure
|
||||
@@ -316,7 +316,11 @@ module ActionController
|
||||
erase_render_results
|
||||
reset_variables_added_to_assigns
|
||||
end
|
||||
|
||||
|
||||
def render_to_string(options = {})
|
||||
Rack::Utils.body_to_s(render_to_body(options)).to_ary.join
|
||||
end
|
||||
|
||||
# Clears the rendered results, allowing for another render to be performed.
|
||||
def erase_render_results #:nodoc:
|
||||
response.body = []
|
||||
@@ -387,4 +391,4 @@ module ActionController
|
||||
render_for_parts(parts, layout, options)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -56,6 +56,14 @@ module AbstractController
|
||||
def naked_render
|
||||
render
|
||||
end
|
||||
|
||||
def rendering_to_body
|
||||
render_to_body "naked_render.erb"
|
||||
end
|
||||
|
||||
def rendering_to_string
|
||||
render_to_string "naked_render.erb"
|
||||
end
|
||||
end
|
||||
|
||||
class TestRenderer < ActiveSupport::TestCase
|
||||
@@ -73,6 +81,16 @@ module AbstractController
|
||||
result = Me2.process(:naked_render)
|
||||
assert_equal "Hello from naked_render.erb", result.response_obj[:body]
|
||||
end
|
||||
|
||||
test "rendering to a rack body" do
|
||||
result = Me2.process(:rendering_to_body)
|
||||
assert_equal "Hello from naked_render.erb", result.response_obj[:body]
|
||||
end
|
||||
|
||||
test "rendering to a string" do
|
||||
result = Me2.process(:rendering_to_string)
|
||||
assert_equal "Hello from naked_render.erb", result.response_obj[:body]
|
||||
end
|
||||
end
|
||||
|
||||
# Test rendering with prefixes
|
||||
|
||||
Reference in New Issue
Block a user