Module: SimpleJson::SimpleJsonRenderable
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/simple_json/simple_json_renderable.rb
Overview
The module for overriding rendering with SimpleJson
class XXXController < ActionController::Base
include SimpleJson::SimpleJsonRenderable
...
end
Instance Method Summary collapse
-
#default_render(*args) ⇒ Object
monkey-patch for ActionController::ImplicitRender#default_render bypassing template search.
- #process_options(options) ⇒ Object
- #render_json_template(template_name, **_options) ⇒ Object
- #render_to_body(options) ⇒ Object
- #rendered_format ⇒ Object
- #simple_renderer ⇒ Object
- #template_name(name) ⇒ Object
- #template_path ⇒ Object
Instance Method Details
#default_render(*args) ⇒ Object
monkey-patch for ActionController::ImplicitRender#default_render bypassing template search
15 16 17 18 19 20 21 22 23 24 |
# File 'lib/simple_json/simple_json_renderable.rb', line 15 def default_render(*args) return super unless request.format.json? @simple_json_template = simple_renderer.renderer(template_name(action_name)) if @simple_json_template render(*args) else super end end |
#process_options(options) ⇒ Object
46 47 48 |
# File 'lib/simple_json/simple_json_renderable.rb', line 46 def () head [:status] if .key?(:status) end |
#render_json_template(template_name, **_options) ⇒ Object
62 63 64 65 |
# File 'lib/simple_json/simple_json_renderable.rb', line 62 def render_json_template(template_name, **) json = simple_renderer.render(template_name) SimpleJson.json_module.encode(json) end |
#render_to_body(options) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/simple_json/simple_json_renderable.rb', line 26 def render_to_body() return super unless request.format.json? return super if [:skip_simple_json] # use super when any of [:body, :plain, :html] exist in options return super if self.class::RENDER_FORMATS_IN_PRIORITY.any? { |key| .key? key } template_name = template_name([:template] || action_name) if .key?(:json) () @rendered_format = 'application/json; charset=utf-8' SimpleJson.json_module.encode([:json]) elsif simple_renderer.renderer(template_name) () @rendered_format = 'application/json; charset=utf-8' render_json_template(template_name, **) else super end end |
#rendered_format ⇒ Object
50 51 52 53 54 |
# File 'lib/simple_json/simple_json_renderable.rb', line 50 def rendered_format return @rendered_format if defined?(@rendered_format) super end |
#simple_renderer ⇒ Object
56 57 58 59 60 |
# File 'lib/simple_json/simple_json_renderable.rb', line 56 def simple_renderer @simple_renderer ||= SimpleJsonRenderer.new(self).tap do |r| r.extend(_helpers) if respond_to?(:_helpers) end end |
#template_name(name) ⇒ Object
77 78 79 80 81 |
# File 'lib/simple_json/simple_json_renderable.rb', line 77 def template_name(name) return name if name.include?('/') "#{template_path}/#{name}" end |
#template_path ⇒ Object
73 74 75 |
# File 'lib/simple_json/simple_json_renderable.rb', line 73 def template_path self.class.name.delete_suffix('Controller').underscore end |