class Wallaby::TypeRenderer

Type renderer

Public Class Methods

render(view, options = {}, locals = {}, &block) click to toggle source

Render partial @param view [ActionView] @param options [Hash] @param locals [Hash] @return [String] HTML

# File lib/services/wallaby/type_renderer.rb, line 12
def render(view, options = {}, locals = {}, &block)
  locals[:object] ||= locals[:form].try :object
  check locals
  complete locals, view.params[:action]
  view.render options, locals, &block
end

Private Class Methods

check(locals) click to toggle source

@param locals [Hash] @raise [ArgumentError] if form is set but blank @raise [ArgumentError] if field_name is not provided @raise [ArgumentError] if object is not decorated

# File lib/services/wallaby/type_renderer.rb, line 25
def check(locals)
  raise ArgumentError, Locale.t('errors.required', subject: 'form') if locals.key?(:form) && locals[:form].blank?
  raise ArgumentError, Locale.t('errors.required', subject: 'field_name') if locals[:field_name].blank?
  raise ArgumentError, 'Object is not decorated.' unless locals[:object].is_a? ResourceDecorator
end
complete(locals, action) click to toggle source

@param locals [Hash] @param action [String]

# File lib/services/wallaby/type_renderer.rb, line 33
def complete(locals, action)
  action_name = FORM_ACTIONS[action] || action
  locals[:metadata] = locals[:object].public_send :"#{action_name}_metadata_of", locals[:field_name]
  locals[:value] = locals[:object].public_send locals[:field_name]
end