josevalim-inherited_resources 0.8.4 → 0.8.5

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.
data/CHANGELOG CHANGED
@@ -1,5 +1,8 @@
1
1
  # Version 0.8
2
2
 
3
+ * Fixed a small bug on optional belongs to with namespaced controllers.
4
+ * Allow a parameter to be given to collection_url in polymorphic cases to replace
5
+ the parent.
3
6
  * Allow InheritedResources to be called without inheritance.
4
7
  * Ensure that controllers that inherit from a controller with InheritedResources
5
8
  works properly.
data/README CHANGED
@@ -1,6 +1,6 @@
1
1
  Inherited Resources
2
2
  License: MIT
3
- Version: 0.8.4
3
+ Version: 0.8.5
4
4
 
5
5
  You can also read this README in pretty html at the GitHub project Wiki page:
6
6
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.8.4
1
+ 0.8.5
@@ -43,9 +43,12 @@ module InheritedResources
43
43
  resource_segments, resource_ivars = [], []
44
44
  resource_config = self.resources_configuration[:self]
45
45
 
46
+ singleton = self.resources_configuration[:self][:singleton]
47
+ polymorphic = self.parents_symbols.include?(:polymorphic)
48
+
46
49
  # Add route_prefix if any.
47
50
  unless resource_config[:route_prefix].blank?
48
- if self.parents_symbols.include?(:polymorphic)
51
+ if polymorphic
49
52
  resource_ivars << resource_config[:route_prefix].to_s.inspect
50
53
  else
51
54
  resource_segments << resource_config[:route_prefix]
@@ -66,9 +69,6 @@ module InheritedResources
66
69
  end
67
70
  end
68
71
 
69
- singleton = self.resources_configuration[:self][:singleton]
70
- polymorphic = self.parents_symbols.include?(:polymorphic)
71
-
72
72
  collection_ivars = resource_ivars.dup
73
73
  collection_segments = resource_segments.dup
74
74
 
@@ -108,7 +108,7 @@ module InheritedResources
108
108
  new_ivars = resource_ivars
109
109
  end
110
110
  elsif polymorphic
111
- collection_ivars << 'resource_class.new'
111
+ collection_ivars << '(@_resource_class_new ||= resource_class.new)'
112
112
  end
113
113
 
114
114
  generate_url_and_path_helpers nil, :collection, collection_segments, collection_ivars
@@ -130,6 +130,15 @@ module InheritedResources
130
130
  ivars.push "(given_args.first || #{ivars.pop})"
131
131
  end
132
132
 
133
+ # In collection in polymorphic cases, allow an argument to be given as a
134
+ # replacemente for the parent.
135
+ #
136
+ if name == :collection && polymorphic
137
+ index = ivars.index(:parent)
138
+ ivars.insert index, "(given_args.first || parent)"
139
+ ivars.delete(:parent)
140
+ end
141
+
133
142
  # When polymorphic is true, the segments must be replace by :polymorphic
134
143
  # and ivars should be gathered into an array, which is compacted when
135
144
  # optional.
@@ -302,6 +302,9 @@ class UrlHelpersTest < ActiveSupport::TestCase
302
302
  controller.send("resource_url", :page => 1)
303
303
 
304
304
  # With args
305
+ controller.expects("polymorphic_url").with([:arg, new_bed], {}).once
306
+ controller.send("collection_url", :arg)
307
+
305
308
  controller.expects("polymorphic_url").with([house, :arg], {}).once
306
309
  controller.send("resource_url", :arg)
307
310
 
@@ -341,6 +344,9 @@ class UrlHelpersTest < ActiveSupport::TestCase
341
344
  controller.send("resource_url", :page => 1)
342
345
 
343
346
  # With args
347
+ controller.expects("polymorphic_url").with(['admin', :arg, new_desk], {}).once
348
+ controller.send("collection_url", :arg)
349
+
344
350
  controller.expects("polymorphic_url").with(['admin', house, :arg], {}).once
345
351
  controller.send("resource_url", :arg)
346
352
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: josevalim-inherited_resources
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.4
4
+ version: 0.8.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - "Jos\xC3\xA9 Valim"