module SimpleJson::SimpleJsonRenderable
The module for overriding rendering with SimpleJson
class XXXController < ActionController::Base include SimpleJson::SimpleJsonRenderable ... end
Public Instance Methods
default_render(*args)
click to toggle source
monkey-patch for ActionController::ImplicitRender#default_render bypassing template search
Calls superclass method
# 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)
click to toggle source
# File lib/simple_json/simple_json_renderable.rb, line 46 def process_options(options) head options[:status] if options.key?(:status) end
render_json_template(template_name, **_options)
click to toggle source
# File lib/simple_json/simple_json_renderable.rb, line 62 def render_json_template(template_name, **_options) json = simple_renderer.render(template_name) SimpleJson.json_module.encode(json) end
render_to_body(options)
click to toggle source
Calls superclass method
# File lib/simple_json/simple_json_renderable.rb, line 26 def render_to_body(options) return super unless request.format.json? return super if options[: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| options.key? key } template_name = template_name(options[:template] || action_name) if options.key?(:json) process_options(options) @rendered_format = 'application/json; charset=utf-8' SimpleJson.json_module.encode(options[:json]) elsif simple_renderer.renderer(template_name) process_options(options) @rendered_format = 'application/json; charset=utf-8' render_json_template(template_name, **options) else super end end
rendered_format()
click to toggle source
Calls superclass method
# File lib/simple_json/simple_json_renderable.rb, line 50 def rendered_format return @rendered_format if defined?(@rendered_format) super end
simple_renderer()
click to toggle source
# 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)
click to toggle source
# 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()
click to toggle source
# File lib/simple_json/simple_json_renderable.rb, line 73 def template_path self.class.name.delete_suffix('Controller').underscore end