Module: Upmin::Railties::Render

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

Instance Method Summary collapse

Instance Method Details

#upmin_render(model_or_node, options = {}) ⇒ Object



4
5
6
7
8
9
10
11
# File 'lib/upmin/railties/render.rb', line 4

def upmin_render(model_or_node, options = {})
  if model_or_node.is_a?(::ActiveRecord::Base)
    upmin_render_node(Upmin::Graph::ModelNode.new(model_or_node), options)

  else # is a node
    upmin_render_node(model_or_node, options)
  end
end

#upmin_render_node(node, options = {}) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/upmin/railties/render.rb', line 34

def upmin_render_node(node, options = {})
  partials = RenderHelpers.partials_for(node, options)

  # TODO(jon): Update this to use something like https://coderwall.com/p/ftbmsa instead of a rescue
  partials.each do |partial|
    puts "Trying #{partial}"
    begin
      return render(
        partial: partial,
        object: node.object, # this doesn't work with nil
        locals: {
          node: node,
          options: options,
          RenderHelpers.object_name(partial) => node.object
        }
      )
    rescue ActionView::MissingTemplate => e
    end
  end
  raise "Failed to find a matching partial, even with fallback :unknown partials"
end

#upmin_render_search_box(upmin_model, options = {}) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/upmin/railties/render.rb', line 13

def upmin_render_search_box(upmin_model, options = {})
  partials = RenderHelpers.partials_for_search_box(upmin_model, options)

  partials.each do |partial|
    begin
      return render(
        partial: partial,
        object: upmin_model, # this doesn't work with nil
        locals: {
          upmin_model: upmin_model,
          options: options
        }
      )
    rescue ActionView::MissingTemplate => e
    end
  end
  raise "Failed to find a matching partial, even with fallback :unknown partials"
end