-
Notifications
You must be signed in to change notification settings - Fork 28
/
controller_context.rb
50 lines (40 loc) · 1.11 KB
/
controller_context.rb
1
2
3
4
5
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
# per controller context, kept for the lifetime of the controller class
# and made available via delegation to controllers and views
class Streamlined::Context::ControllerContext
attr_accessor :ui_model_name, :ui_context
def initialize(ui_model_name)
streamlined_ui(ui_model_name)
end
def self.delegates
[:model_name,
:model,
:model_symbol,
:model_table,
:model_underscore,
:model_ui,
:streamlined_ui]
end
def model
Class.class_eval(model_name)
end
def model_symbol
ActiveSupport::Inflector.underscore(model_name).to_sym
end
def model_table
ActiveSupport::Inflector.tableize(model_name)
end
def model_underscore
ActiveSupport::Inflector.underscore(model_name)
end
def model_ui
Streamlined.ui_for(ui_model_name, :context => ui_context)
end
def model_name
ui_model_name
end
def streamlined_ui(ui_model_name, ui_context = nil, &blk)
@ui_model_name = ui_model_name.to_s
@ui_context = ui_context
model_ui.instance_eval(&blk) if block_given?
end
end