inherited_resources_helpers 0.0.1 → 0.0.2

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.
@@ -1,6 +1,10 @@
1
1
  module InheritedResources
2
2
  module Helpers
3
3
  module Resources
4
+ def self.included(base)
5
+ base.send(:helper_method, public_instance_methods(false))
6
+ end
7
+
4
8
  def resource
5
9
  member_action? ? super : build_resource
6
10
  end
@@ -1,6 +1,10 @@
1
1
  module InheritedResources
2
2
  module Helpers
3
3
  module UrlFor
4
+ def self.included(base)
5
+ base.send(:helper_method, public_instance_methods(false))
6
+ end
7
+
4
8
  def index_url(options = {})
5
9
  polymorphic_url(parent_resources << resource_class, options)
6
10
  end
@@ -10,12 +14,13 @@ module InheritedResources
10
14
  end
11
15
 
12
16
  def show_url(options = {})
17
+ raise_invalid_url_helper(:show_url, resource) if resource.new_record?
13
18
  raise "can't generate show_url because the current resource (#{resource.inspect}) is a new record" if resource.new_record?
14
19
  polymorphic_url(resources, options)
15
20
  end
16
21
 
17
22
  def edit_url(options = {})
18
- raise "can't generate edit_url because the current resource (#{resource.inspect}) is a new record" if resource.new_record?
23
+ raise_invalid_url_helper(:edit_url, resource) if resource.new_record?
19
24
  polymorphic_url(resources.unshift(:edit), options)
20
25
  end
21
26
 
@@ -24,6 +29,64 @@ module InheritedResources
24
29
  send(:"#{action}_url", args.extract_options!.reverse_merge(:routing_type => :path))
25
30
  end
26
31
  end
32
+
33
+ def parent_index_url(options = {})
34
+ polymorphic_url(parent_resources[0..-2] << parent_resources.last.class, options)
35
+ end
36
+
37
+ def parent_new_url(options = {})
38
+ polymorphic_url(parent_resources[0..-2].unshift(:new) << parent_resources.last.class.name.underscore, options)
39
+ end
40
+
41
+ def parent_show_url(options = {})
42
+ polymorphic_url(parent_resources, options)
43
+ end
44
+
45
+ def parent_edit_url(options = {})
46
+ polymorphic_url(parent_resources.unshift(:edit), options)
47
+ end
48
+
49
+ [:index, :new, :show, :edit].each do |action|
50
+ define_method(:"parent_#{action}_path") do |*args|
51
+ send(:"parent_#{action}_url", args.extract_options!.reverse_merge(:routing_type => :path))
52
+ end
53
+ end
54
+
55
+ def children_index_url(child, options = {})
56
+ raise_invalid_url_helper("children_index_url(#{:child.inspect})", resource) if resource.new_record?
57
+ polymorphic_url(resources << child.to_s.pluralize, options)
58
+ end
59
+
60
+ def children_index_path(*args)
61
+ children_index_url(*args << args.extract_options!.reverse_merge(:routing_type => :path))
62
+ end
63
+
64
+ def children_new_url(child, options = {})
65
+ raise_invalid_url_helper("children_new_url(#{:child.inspect})", resource) if resource.new_record?
66
+ polymorphic_url(resources.unshift(:new) << child.to_s.singularize, options)
67
+ end
68
+
69
+ def children_new_path(*args)
70
+ children_new_url(*args << args.extract_options!.reverse_merge(:routing_type => :path))
71
+ end
72
+
73
+ alias :resources_url :index_url
74
+ alias :resources_path :index_path
75
+
76
+ alias :resource_url :show_url
77
+ alias :resource_path :show_path
78
+
79
+ alias :parent_resources_url :parent_index_url
80
+ alias :parent_resources_path :parent_index_path
81
+
82
+ alias :parent_resource_url :parent_show_url
83
+ alias :parent_resource_path :parent_show_path
84
+
85
+ protected
86
+
87
+ def raise_invalid_url_helper(method, resource)
88
+ raise "can't generate #{method} because the current resource (#{resource.inspect}) is a new record"
89
+ end
27
90
  end
28
91
  end
29
92
  end
@@ -1,3 +1,3 @@
1
1
  module InheritedResourcesHelpers
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inherited_resources_helpers
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sven Fuchs