Module: Upmin::Railties::Render

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

Instance Method Summary collapse

Instance Method Details

#up_action(model, action_name, options = {}) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/upmin/railties/render.rb', line 50

def up_action(model, action_name, options = {})
  options[:locals] ||= {}
  options[:locals][:model] ||= model
  options[:locals][:action_name] = action_name

  upmin_model = Upmin::Model.new(model)
  options[:locals][:upmin_model] ||= upmin_model

  partials = RenderHelpers.action_partials(upmin_model, action_name, options)

  data = upmin_model.action_parameters(action_name)
  return up_render(data, partials, options, :up_action)
end

#up_association(model, assoc_name, options = {}) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/upmin/railties/render.rb', line 36

def up_association(model, assoc_name, options = {})
  options[:locals] ||= {}
  options[:locals][:model] ||= model
  options[:locals][:assoc_name] = assoc_name

  upmin_model = Upmin::Model.new(model)
  options[:locals][:upmin_model] ||= upmin_model

  partials = RenderHelpers.association_partials(upmin_model, assoc_name, options)

  data = upmin_model.association(assoc_name, options)
  return up_render([data].flatten, partials, options, :up_association)
end

#up_attribute(model, attr_name, options = {}) ⇒ Object



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

def up_attribute(model, attr_name, options = {})
  options[:locals] ||= {}
  options[:locals][:model] ||= model
  options[:locals][:attr_name] = attr_name

  upmin_model = Upmin::Model.new(model)
  options[:locals][:upmin_model] ||= upmin_model

  options[:locals][:form_id] ||= upmin_model.attribute_form_id(attr_name)
  # Only fill this in if it was never set so the user can override this.
  if options[:locals][:editable].nil?
    options[:locals][:editable] = upmin_model.attribute_editable?(attr_name)
  end


  partials = RenderHelpers.attribute_partials(upmin_model, attr_name, options)

  data = upmin_model.attribute(attr_name)
  return up_render(data, partials, options, :up_attribute)
end

#up_model(model, options = {}) ⇒ Object



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

def up_model(model, options = {})
  options[:locals] ||= {}

  upmin_model = Upmin::Model.new(model)
  options[:locals][:upmin_model] ||= upmin_model

  partials = RenderHelpers.model_partials(upmin_model, options)
  return up_render(model, partials, options, :up_model)
end

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

Generic render method that is used by all of the up_<something> methods. Tries to render the partials in order, passing data in as the :object, along with options.



103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/upmin/railties/render.rb', line 103

def up_render(data, partials, options = {}, calling_method = nil)
  # 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 "Failed to find a matching partial while trying to render `#{calling_method}` with the following data: #{data.inspect}"
end

#up_search_box(klass, options = {}) ⇒ Object



86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/upmin/railties/render.rb', line 86

def up_search_box(klass, options = {})
  options[:locals] ||= {}

  klass = Upmin::Klass.find(klass) unless klass.is_a?(Upmin::Klass)
  if klass.nil?
    raise "Invalid klass provided in `up_search_box`"
  end

  options[:locals][:klass] = klass

  partials = RenderHelpers.search_box_partials(klass, options)

  return up_render(klass, partials, options, :up_search_box)
end

#up_search_result(model, options = {}) ⇒ Object



75
76
77
78
79
80
81
82
83
84
# File 'lib/upmin/railties/render.rb', line 75

def up_search_result(model, options = {})
  options[:locals] ||= {}

  upmin_model = Upmin::Model.new(model)
  options[:locals][:upmin_model] ||= upmin_model

  partials = RenderHelpers.search_result_partials(upmin_model, options)

  return up_render(model, partials, options, :up_search_result)
end

#up_search_results(ransack_search, ransack_results, options = {}) ⇒ Object



64
65
66
67
68
69
70
71
72
73
# File 'lib/upmin/railties/render.rb', line 64

def up_search_results(ransack_search, ransack_results, options = {})
  options[:locals] ||= {}
  options[:locals][:klass] ||= Upmin::Klass.find(ransack_search.klass)
  options[:locals][:ransack_search] ||= ransack_search
  options[:locals][:ransack_results] ||= ransack_results

  partials = RenderHelpers.search_results_partials(ransack_search, options)

  return up_render(ransack_results, partials, options, :up_search_results)
end