aeonscope-btech_rest 0.5.2 → 0.5.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/CHANGELOG.rdoc +4 -0
  2. data/VERSION.yml +1 -1
  3. data/lib/actions.rb +32 -14
  4. metadata +1 -1
@@ -40,4 +40,8 @@
40
40
  = v0.5.x
41
41
 
42
42
  * Fixed a bug in the disabled_actions class method where unique actions were returning as a null object.
43
+ * Added graceful handling of resources with no models as there are times where you can have a RESTful controller with no associated model.
44
+ * Renamed the render_new_or_edit method to render_new_or_edit_partial (see actions.rb).
45
+ * Added a render_action_partial method for generic rendering of action partials (see actions.rb).
46
+
43
47
 
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 0
3
3
  :minor: 5
4
- :patch: 2
4
+ :patch: 3
@@ -11,28 +11,31 @@ module BTech
11
11
  records = parent.instance_eval("#{@resources.last[:parent_resource_method] || @resources.last[:name]}").paginate :page => params[:page], :per_page => 10
12
12
  else
13
13
  # Records for single resource.
14
- records_name = get_model_name.pluralize
15
- records = @resources.last[:model].all.paginate(:page => params[:page], :per_page => 10)
14
+ records_name = get_model_name
15
+ if records_name
16
+ records_name = records_name.pluralize
17
+ records = @resources.last[:model].all.paginate(:page => params[:page], :per_page => 10)
18
+ end
16
19
  end
17
- instance_variable_set "@#{records_name}", records
20
+ instance_variable_set "@#{records_name}", records if records_name
18
21
  end
19
22
 
20
23
  # Default show action. Feel free to override.
21
24
  def show
22
25
  build_resources
23
- render :partial => @resources.last[:show_partial], :layout => true, :locals => {get_model_symbol => get_record, :resources => @resources}
26
+ render_action_partial @resources.last[:show_partial]
24
27
  end
25
28
 
26
29
  # Default new action. Feel free to override.
27
30
  def new
28
31
  build_resources
29
- render_new_or_edit
32
+ render_new_or_edit_partial
30
33
  end
31
34
 
32
35
  # Default edit action. Feel free to override.
33
36
  def edit
34
37
  build_resources
35
- render_new_or_edit
38
+ render_new_or_edit_partial
36
39
  end
37
40
 
38
41
  # Default create action. Feel free to override.
@@ -41,7 +44,7 @@ module BTech
41
44
  if get_record.update_attributes params[get_model_symbol]
42
45
  redirect_to build_resource_url(@resources)
43
46
  else
44
- render_new_or_edit
47
+ render_new_or_edit_partial
45
48
  end
46
49
  end
47
50
 
@@ -51,7 +54,7 @@ module BTech
51
54
  if get_record.update_attributes params[get_model_symbol]
52
55
  redirect_to build_resource_url(@resources)
53
56
  else
54
- render_new_or_edit
57
+ render_new_or_edit_partial
55
58
  end
56
59
  end
57
60
 
@@ -65,9 +68,20 @@ module BTech
65
68
 
66
69
  protected
67
70
 
71
+ # Convenience method for rendering the action partials.
72
+ def render_action_partial partial
73
+ symbol = get_model_symbol
74
+ record = get_record
75
+ if symbol && record
76
+ render :partial => partial, :layout => true, :locals => {symbol => record, :resources => @resources}
77
+ else
78
+ render :partial => partial, :layout => true, :locals => {:resources => @resources}
79
+ end
80
+ end
81
+
68
82
  # Convenience method for rendering the new or edit partial.
69
- def render_new_or_edit
70
- render :partial => @resources.last[:new_or_edit_partial], :layout => true, :locals => {get_model_symbol => get_record, :resources => @resources}
83
+ def render_new_or_edit_partial
84
+ render_action_partial @resources.last[:new_or_edit_partial]
71
85
  end
72
86
 
73
87
  # Builds the RESTful parent URL based on an array of resources.
@@ -104,17 +118,20 @@ module BTech
104
118
 
105
119
  # Answers the name of the current model.
106
120
  def get_model_name
107
- @resources.last[:model].name.underscore
121
+ model = @resources.last[:model]
122
+ model ? model.name.underscore : nil
108
123
  end
109
124
 
110
125
  # Answers the symbol of the current model.
111
126
  def get_model_symbol
112
- get_model_name.to_sym
127
+ name = get_model_name
128
+ name ? name.to_sym : nil
113
129
  end
114
130
 
115
131
  # Answers the current record (a.k.a. the record of the last resource).
116
132
  def get_record
117
- instance_variable_get "@#{get_model_name}"
133
+ name = get_model_name
134
+ name ? instance_variable_get("@#{name}") : nil
118
135
  end
119
136
 
120
137
  # Builds all resources for the controller(s).
@@ -126,7 +143,8 @@ module BTech
126
143
  @resources.reverse!
127
144
  end
128
145
  # Convenience for accessing the current record.
129
- instance_variable_set "@#{get_model_name}", @resources.last[:record]
146
+ name = get_model_name
147
+ instance_variable_set "@#{name}", @resources.last[:record] if name
130
148
  end
131
149
 
132
150
  # Convenience method for answering back a properly camelized controller name.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aeonscope-btech_rest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brooke Kuhlmann