Module: Upmin::Railties::Render

Defined in:
lib/upmin/railties/render.rb

Instance Method Summary collapse

Instance Method Details

#up_render(data, options = {}) ⇒ Object

Render method that is used by upmin-admin. Tries to render partials in order, passing data in as the :object, along with options.



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/upmin/railties/render.rb', line 6

def up_render(data, options = {})
  if data.is_a?(Upmin::Model)
    options = RenderHelpers.model_options(data, options)
    partials = RenderHelpers.model_partials(data, options)

  elsif data.is_a?(Upmin::Attribute)
    options = RenderHelpers.attribute_options(data, options)
    partials = RenderHelpers.attribute_partials(data, options)

  elsif data.is_a?(Upmin::Association)
    options = RenderHelpers.association_options(data, options)
    partials = RenderHelpers.association_partials(data, options)

  elsif data.is_a?(Upmin::Action)
    options = RenderHelpers.action_options(data, options)
    partials = RenderHelpers.action_partials(data, options)

  elsif data.is_a?(Upmin::Parameter)
    options = RenderHelpers.parameter_options(data, options)
    partials = RenderHelpers.parameter_partials(data, options)

  elsif data.is_a?(Upmin::Query)
    options = RenderHelpers.search_results_options(data, options)
    partials = RenderHelpers.search_results_partials(data, options)

  elsif data.superclass == Upmin::Model
    # Probably rendering a search box
    options = RenderHelpers.search_box_options(data, options)
    partials = RenderHelpers.search_box_partials(data, options)

  else
    raise Upmin::ArgumentError.new(data)
  end

  # Use options as the render hash, and set :object as the data being used for rendering.
  options[:object] = data

  partials.each do |partial|
    begin
      options[:partial] = partial
      return render(options)
    rescue ActionView::MissingTemplate => e
    end
  end

  # If we get here we tried all of the partials and nothing matched. This *shouldn't* be possible but might happen if partials are deleted.
  raise Upmin::MissingPartial.new(data)
end