aeonscope-btech_rest 0.5.2 → 0.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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