Module: ImplicitRendering

Defined in:
lib/implicit_rendering.rb,
lib/implicit_rendering/version.rb

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

VERSION =
'0.1.2'.freeze

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.prepended(base) ⇒ Object



14
15
16
17
# File 'lib/implicit_rendering.rb', line 14

def self.prepended(base)
  base.extend ClassMethods
  base.attr_reader :action_before_implicit_render
end

Instance Method Details

#default_renderObject



19
20
21
22
23
24
25
# File 'lib/implicit_rendering.rb', line 19

def default_render
  template_name = self.class.implicit_render_mapping&.dig(action_name)

  return super unless perform_implicit_rendering?(template_name)

  render template_name
end

#perform_implicit_rendering?(template_name) ⇒ Boolean

Returns:

  • (Boolean)


35
36
37
38
# File 'lib/implicit_rendering.rb', line 35

def perform_implicit_rendering?(template_name)
  template_name.present? &&
    self.class.implicit_render_formats.any? {|format| request.format == format }
end

#render(options = {}) ⇒ Object



27
28
29
30
31
32
33
# File 'lib/implicit_rendering.rb', line 27

def render(options={})
  if options.is_a?(Hash) && (template_name = self.class.implicit_render_mapping&.dig(options[:action].to_s))
    @action_before_implicit_render = options[:action]
    options[:action] = template_name
  end
  super
end