inherited_resources_helpers 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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