aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/abstract_controller/rendering.rb
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/lib/abstract_controller/rendering.rb')
-rw-r--r--actionpack/lib/abstract_controller/rendering.rb43
1 files changed, 12 insertions, 31 deletions
diff --git a/actionpack/lib/abstract_controller/rendering.rb b/actionpack/lib/abstract_controller/rendering.rb
index 4596aad46c..575b9807d0 100644
--- a/actionpack/lib/abstract_controller/rendering.rb
+++ b/actionpack/lib/abstract_controller/rendering.rb
@@ -10,6 +10,14 @@ module AbstractController
end
end
+ class UnsupportedOperationError < Error
+ DEFAULT_MESSAGE = "Unsupported render operation. BasicRendering supports only :text and :nothing options. For more, you need to include ActionView."
+
+ def initialize
+ super DEFAULT_MESSAGE
+ end
+ end
+
module Rendering
extend ActiveSupport::Concern
@@ -22,6 +30,8 @@ module AbstractController
# sticks the result in self.response_body.
# :api: public
def render(*args, &block)
+ options = _normalize_render(*args, &block)
+ self.response_body = render_to_body(options)
end
# Raw rendering of a template to a string.
@@ -40,11 +50,10 @@ module AbstractController
render_to_body(options)
end
- # Raw rendering of a template.
+ # Performs the actual template rendering.
# :api: public
def render_to_body(options = {})
- _process_options(options)
- _render_template(options)
+ raise UnsupportedOperationError
end
# Return Content-Type of rendered content
@@ -97,32 +106,4 @@ module AbstractController
options
end
end
-
- # Basic rendering implements the most minimal rendering layer.
- # It only supports rendering :text and :nothing. Passing any other option will
- # result in `UnsupportedOperationError` exception. For more functionality like
- # different formats, layouts etc. you should use `ActionView` gem.
- module BasicRendering
- extend ActiveSupport::Concern
-
- # Render text or nothing (empty string) to response_body
- # :api: public
- def render(*args, &block)
- super(*args, &block)
- opts = args.first
- if opts.has_key?(:text) && opts[:text].present?
- self.response_body = opts[:text]
- elsif opts.has_key?(:nothing) && opts[:nothing]
- self.response_body = " "
- else
- raise UnsupportedOperationError
- end
- end
-
- class UnsupportedOperationError < StandardError
- def initialize
- super "Unsupported render operation. BasicRendering supports only :text and :nothing options. For more, you need to include ActionView."
- end
- end
- end
end