dkubb-resource_controller 0.6.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/LICENSE +22 -0
- data/README.rdoc +330 -0
- data/VERSION.yml +4 -0
- data/generators/scaffold_resource/USAGE +29 -0
- data/generators/scaffold_resource/scaffold_resource_generator.rb +179 -0
- data/generators/scaffold_resource/templates/controller.rb +2 -0
- data/generators/scaffold_resource/templates/fixtures.yml +10 -0
- data/generators/scaffold_resource/templates/functional_test.rb +57 -0
- data/generators/scaffold_resource/templates/helper.rb +2 -0
- data/generators/scaffold_resource/templates/migration.rb +15 -0
- data/generators/scaffold_resource/templates/model.rb +2 -0
- data/generators/scaffold_resource/templates/old_migration.rb +13 -0
- data/generators/scaffold_resource/templates/rspec/functional_spec.rb +255 -0
- data/generators/scaffold_resource/templates/rspec/helper_spec.rb +11 -0
- data/generators/scaffold_resource/templates/rspec/routing_spec.rb +61 -0
- data/generators/scaffold_resource/templates/rspec/unit_spec.rb +11 -0
- data/generators/scaffold_resource/templates/rspec/views/edit_spec.rb +28 -0
- data/generators/scaffold_resource/templates/rspec/views/index_spec.rb +26 -0
- data/generators/scaffold_resource/templates/rspec/views/new_spec.rb +30 -0
- data/generators/scaffold_resource/templates/rspec/views/show_spec.rb +25 -0
- data/generators/scaffold_resource/templates/shoulda_functional_test.rb +19 -0
- data/generators/scaffold_resource/templates/unit_test.rb +7 -0
- data/generators/scaffold_resource/templates/view__form.erb +6 -0
- data/generators/scaffold_resource/templates/view__form.haml +5 -0
- data/generators/scaffold_resource/templates/view_edit.erb +16 -0
- data/generators/scaffold_resource/templates/view_edit.haml +11 -0
- data/generators/scaffold_resource/templates/view_index.erb +22 -0
- data/generators/scaffold_resource/templates/view_index.haml +19 -0
- data/generators/scaffold_resource/templates/view_new.erb +12 -0
- data/generators/scaffold_resource/templates/view_new.haml +9 -0
- data/generators/scaffold_resource/templates/view_show.erb +9 -0
- data/generators/scaffold_resource/templates/view_show.haml +9 -0
- data/lib/resource_controller.rb +26 -0
- data/lib/resource_controller/accessors.rb +77 -0
- data/lib/resource_controller/action_options.rb +40 -0
- data/lib/resource_controller/actions.rb +75 -0
- data/lib/resource_controller/base.rb +15 -0
- data/lib/resource_controller/class_methods.rb +24 -0
- data/lib/resource_controller/controller.rb +70 -0
- data/lib/resource_controller/failable_action_options.rb +25 -0
- data/lib/resource_controller/helpers.rb +28 -0
- data/lib/resource_controller/helpers/current_objects.rb +73 -0
- data/lib/resource_controller/helpers/internal.rb +80 -0
- data/lib/resource_controller/helpers/nested.rb +67 -0
- data/lib/resource_controller/helpers/singleton_customizations.rb +64 -0
- data/lib/resource_controller/helpers/urls.rb +132 -0
- data/lib/resource_controller/response_collector.rb +27 -0
- data/lib/resource_controller/singleton.rb +15 -0
- data/lib/urligence.rb +50 -0
- data/rails/init.rb +6 -0
- data/test/Rakefile +10 -0
- data/test/app/controllers/accounts_controller.rb +6 -0
- data/test/app/controllers/application_controller.rb +7 -0
- data/test/app/controllers/cms/options_controller.rb +3 -0
- data/test/app/controllers/cms/personnel_controller.rb +2 -0
- data/test/app/controllers/cms/photos_controller.rb +6 -0
- data/test/app/controllers/cms/products_controller.rb +3 -0
- data/test/app/controllers/comments_controller.rb +3 -0
- data/test/app/controllers/images_controller.rb +4 -0
- data/test/app/controllers/options_controller.rb +8 -0
- data/test/app/controllers/people_controller.rb +9 -0
- data/test/app/controllers/photos_controller.rb +12 -0
- data/test/app/controllers/posts_controller.rb +10 -0
- data/test/app/controllers/projects_controller.rb +3 -0
- data/test/app/controllers/somethings_controller.rb +3 -0
- data/test/app/controllers/tags_controller.rb +13 -0
- data/test/app/controllers/users_controller.rb +12 -0
- data/test/app/helpers/accounts_helper.rb +2 -0
- data/test/app/helpers/application_helper.rb +3 -0
- data/test/app/helpers/cms/products_helper.rb +2 -0
- data/test/app/helpers/comments_helper.rb +2 -0
- data/test/app/helpers/images_helper.rb +2 -0
- data/test/app/helpers/options_helper.rb +2 -0
- data/test/app/helpers/people_helper.rb +2 -0
- data/test/app/helpers/photos_helper.rb +2 -0
- data/test/app/helpers/posts_helper.rb +2 -0
- data/test/app/helpers/projects_helper.rb +2 -0
- data/test/app/helpers/somethings_helper.rb +2 -0
- data/test/app/helpers/tags_helper.rb +2 -0
- data/test/app/helpers/users_helper.rb +2 -0
- data/test/app/models/account.rb +4 -0
- data/test/app/models/comment.rb +3 -0
- data/test/app/models/image.rb +3 -0
- data/test/app/models/option.rb +3 -0
- data/test/app/models/personnel.rb +3 -0
- data/test/app/models/photo.rb +5 -0
- data/test/app/models/post.rb +3 -0
- data/test/app/models/product.rb +3 -0
- data/test/app/models/project.rb +2 -0
- data/test/app/models/something.rb +2 -0
- data/test/app/models/tag.rb +3 -0
- data/test/app/models/user.rb +3 -0
- data/test/app/views/accounts/_form.html.erb +4 -0
- data/test/app/views/accounts/edit.html.erb +14 -0
- data/test/app/views/accounts/new.html.erb +12 -0
- data/test/app/views/accounts/show.html.erb +5 -0
- data/test/app/views/cms/options/edit.rhtml +17 -0
- data/test/app/views/cms/options/index.rhtml +20 -0
- data/test/app/views/cms/options/new.rhtml +16 -0
- data/test/app/views/cms/options/show.rhtml +8 -0
- data/test/app/views/cms/photos/edit.rhtml +17 -0
- data/test/app/views/cms/photos/index.rhtml +20 -0
- data/test/app/views/cms/photos/new.rhtml +16 -0
- data/test/app/views/cms/photos/show.rhtml +8 -0
- data/test/app/views/cms/products/edit.rhtml +17 -0
- data/test/app/views/cms/products/index.rhtml +20 -0
- data/test/app/views/cms/products/new.rhtml +16 -0
- data/test/app/views/cms/products/show.rhtml +8 -0
- data/test/app/views/comments/edit.rhtml +27 -0
- data/test/app/views/comments/index.rhtml +24 -0
- data/test/app/views/comments/new.rhtml +26 -0
- data/test/app/views/comments/show.rhtml +18 -0
- data/test/app/views/images/_form.html.erb +4 -0
- data/test/app/views/images/edit.html.erb +14 -0
- data/test/app/views/images/new.html.erb +12 -0
- data/test/app/views/layouts/application.rhtml +17 -0
- data/test/app/views/layouts/comments.rhtml +17 -0
- data/test/app/views/layouts/options.rhtml +17 -0
- data/test/app/views/layouts/people.rhtml +17 -0
- data/test/app/views/layouts/photos.rhtml +17 -0
- data/test/app/views/layouts/projects.rhtml +17 -0
- data/test/app/views/layouts/somethings.rhtml +17 -0
- data/test/app/views/layouts/tags.rhtml +17 -0
- data/test/app/views/options/_form.html.erb +8 -0
- data/test/app/views/options/edit.html.erb +16 -0
- data/test/app/views/options/index.html.erb +21 -0
- data/test/app/views/options/new.html.erb +12 -0
- data/test/app/views/options/show.html.erb +10 -0
- data/test/app/views/people/edit.rhtml +17 -0
- data/test/app/views/people/index.rhtml +20 -0
- data/test/app/views/people/new.rhtml +16 -0
- data/test/app/views/people/show.rhtml +8 -0
- data/test/app/views/photos/edit.rhtml +17 -0
- data/test/app/views/photos/index.rhtml +20 -0
- data/test/app/views/photos/new.rhtml +16 -0
- data/test/app/views/photos/show.rhtml +8 -0
- data/test/app/views/posts/edit.rhtml +22 -0
- data/test/app/views/posts/index.rhtml +22 -0
- data/test/app/views/posts/new.rhtml +21 -0
- data/test/app/views/posts/show.rhtml +13 -0
- data/test/app/views/projects/edit.rhtml +17 -0
- data/test/app/views/projects/index.rhtml +20 -0
- data/test/app/views/projects/new.rhtml +16 -0
- data/test/app/views/projects/show.rhtml +8 -0
- data/test/app/views/somethings/edit.rhtml +17 -0
- data/test/app/views/somethings/index.rhtml +20 -0
- data/test/app/views/somethings/new.rhtml +16 -0
- data/test/app/views/somethings/show.rhtml +8 -0
- data/test/app/views/tags/edit.rhtml +17 -0
- data/test/app/views/tags/index.rhtml +20 -0
- data/test/app/views/tags/index.rjs +0 -0
- data/test/app/views/tags/new.rhtml +16 -0
- data/test/app/views/tags/show.rhtml +8 -0
- data/test/app/views/users/edit.rhtml +17 -0
- data/test/app/views/users/index.rhtml +20 -0
- data/test/app/views/users/new.rhtml +16 -0
- data/test/app/views/users/show.rhtml +8 -0
- data/test/config/boot.rb +110 -0
- data/test/config/database.yml +9 -0
- data/test/config/environment.rb +49 -0
- data/test/config/environments/development.rb +20 -0
- data/test/config/environments/test.rb +19 -0
- data/test/config/initializers/inflections.rb +14 -0
- data/test/config/routes.rb +61 -0
- data/test/db/migrate/001_create_posts.rb +12 -0
- data/test/db/migrate/002_create_products.rb +11 -0
- data/test/db/migrate/003_create_comments.rb +13 -0
- data/test/db/migrate/004_create_options.rb +13 -0
- data/test/db/migrate/005_create_photos.rb +11 -0
- data/test/db/migrate/006_create_tags.rb +17 -0
- data/test/db/migrate/007_create_somethings.rb +11 -0
- data/test/db/migrate/008_create_accounts.rb +11 -0
- data/test/db/migrate/009_add_account_id_to_photos.rb +9 -0
- data/test/db/migrate/010_create_projects.rb +11 -0
- data/test/db/migrate/011_create_images.rb +12 -0
- data/test/db/migrate/012_create_users.rb +11 -0
- data/test/db/migrate/013_create_personnel.rb +11 -0
- data/test/db/migrate/014_add_personnel_id_to_photos.rb +9 -0
- data/test/db/schema.rb +78 -0
- data/test/script/console +3 -0
- data/test/script/destroy +3 -0
- data/test/script/generate +3 -0
- data/test/script/server +3 -0
- data/test/test/fixtures/accounts.yml +7 -0
- data/test/test/fixtures/comments.yml +11 -0
- data/test/test/fixtures/images.yml +6 -0
- data/test/test/fixtures/options.yml +9 -0
- data/test/test/fixtures/personnel.yml +5 -0
- data/test/test/fixtures/photos.yml +9 -0
- data/test/test/fixtures/photos_tags.yml +3 -0
- data/test/test/fixtures/posts.yml +9 -0
- data/test/test/fixtures/products.yml +7 -0
- data/test/test/fixtures/projects.yml +7 -0
- data/test/test/fixtures/somethings.yml +7 -0
- data/test/test/fixtures/tags.yml +7 -0
- data/test/test/fixtures/users.yml +5 -0
- data/test/test/functional/cms/options_controller_test.rb +23 -0
- data/test/test/functional/cms/photos_controller_test.rb +43 -0
- data/test/test/functional/cms/products_controller_test.rb +23 -0
- data/test/test/functional/comments_controller_test.rb +26 -0
- data/test/test/functional/images_controller_test.rb +37 -0
- data/test/test/functional/people_controller_test.rb +34 -0
- data/test/test/functional/photos_controller_test.rb +130 -0
- data/test/test/functional/posts_controller_test.rb +34 -0
- data/test/test/functional/projects_controller_test.rb +28 -0
- data/test/test/functional/somethings_controller_test.rb +28 -0
- data/test/test/functional/tags_controller_test.rb +64 -0
- data/test/test/functional/users_controller_test.rb +24 -0
- data/test/test/test_helper.rb +13 -0
- data/test/test/unit/accessors_test.rb +110 -0
- data/test/test/unit/account_test.rb +7 -0
- data/test/test/unit/action_options_test.rb +109 -0
- data/test/test/unit/base_test.rb +11 -0
- data/test/test/unit/comment_test.rb +10 -0
- data/test/test/unit/failable_action_options_test.rb +77 -0
- data/test/test/unit/helpers/current_objects_test.rb +133 -0
- data/test/test/unit/helpers/internal_test.rb +106 -0
- data/test/test/unit/helpers/nested_test.rb +86 -0
- data/test/test/unit/helpers/singleton_current_objects_test.rb +68 -0
- data/test/test/unit/helpers/singleton_nested_test.rb +77 -0
- data/test/test/unit/helpers/singleton_urls_test.rb +67 -0
- data/test/test/unit/helpers/urls_test.rb +75 -0
- data/test/test/unit/helpers_test.rb +25 -0
- data/test/test/unit/image_test.rb +7 -0
- data/test/test/unit/option_test.rb +10 -0
- data/test/test/unit/photo_test.rb +10 -0
- data/test/test/unit/post_test.rb +10 -0
- data/test/test/unit/project_test.rb +10 -0
- data/test/test/unit/response_collector_test.rb +49 -0
- data/test/test/unit/something_test.rb +10 -0
- data/test/test/unit/tag_test.rb +10 -0
- data/test/test/unit/urligence_test.rb +203 -0
- metadata +332 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# Thanks to Urligence, you get some free url helpers.
|
|
2
|
+
#
|
|
3
|
+
# No matter what your controller looks like...
|
|
4
|
+
#
|
|
5
|
+
# [edit_|new_]object_url # is the equivalent of saying [edit_|new_]post_url(@post)
|
|
6
|
+
# [edit_|new_]object_url(some_other_object) # allows you to specify an object, but still maintain any paths or namespaces that are present
|
|
7
|
+
#
|
|
8
|
+
# collection_url # is like saying posts_url
|
|
9
|
+
#
|
|
10
|
+
# Url helpers are especially useful when working with polymorphic controllers.
|
|
11
|
+
#
|
|
12
|
+
# # /posts/1/comments
|
|
13
|
+
# object_url #=> /posts/1/comments/#{@comment.to_param}
|
|
14
|
+
# object_url(comment) #=> /posts/1/comments/#{comment.to_param}
|
|
15
|
+
# edit_object_url #=> /posts/1/comments/#{@comment.to_param}/edit
|
|
16
|
+
# collection_url #=> /posts/1/comments
|
|
17
|
+
#
|
|
18
|
+
# # /products/1/comments
|
|
19
|
+
# object_url #=> /products/1/comments/#{@comment.to_param}
|
|
20
|
+
# object_url(comment) #=> /products/1/comments/#{comment.to_param}
|
|
21
|
+
# edit_object_url #=> /products/1/comments/#{@comment.to_param}/edit
|
|
22
|
+
# collection_url #=> /products/1/comments
|
|
23
|
+
#
|
|
24
|
+
# # /comments
|
|
25
|
+
# object_url #=> /comments/#{@comment.to_param}
|
|
26
|
+
# object_url(comment) #=> /comments/#{comment.to_param}
|
|
27
|
+
# edit_object_url #=> /comments/#{@comment.to_param}/edit
|
|
28
|
+
# collection_url #=> /comments
|
|
29
|
+
#
|
|
30
|
+
# Or with namespaced, nested controllers...
|
|
31
|
+
#
|
|
32
|
+
# # /admin/products/1/options
|
|
33
|
+
# object_url #=> /admin/products/1/options/#{@option.to_param}
|
|
34
|
+
# object_url(option) #=> /admin/products/1/options/#{option.to_param}
|
|
35
|
+
# edit_object_url #=> /admin/products/1/options/#{@option.to_param}/edit
|
|
36
|
+
# collection_url #=> /admin/products/1/options
|
|
37
|
+
#
|
|
38
|
+
# You get the idea. Everything is automagical! All parameters are inferred.
|
|
39
|
+
#
|
|
40
|
+
module ResourceController
|
|
41
|
+
module Helpers
|
|
42
|
+
module Urls
|
|
43
|
+
protected
|
|
44
|
+
['', 'edit_'].each do |type|
|
|
45
|
+
symbol = type.blank? ? nil : type.gsub(/_/, '').to_sym
|
|
46
|
+
|
|
47
|
+
define_method("#{type}object_url") do |*alternate_object|
|
|
48
|
+
smart_url *object_url_options(symbol, alternate_object.first)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
define_method("#{type}object_path") do |*alternate_object|
|
|
52
|
+
smart_path *object_url_options(symbol, alternate_object.first)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
define_method("hash_for_#{type}object_url") do |*alternate_object|
|
|
56
|
+
hash_for_smart_url *object_url_options(symbol, alternate_object.first)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
define_method("hash_for_#{type}object_path") do |*alternate_object|
|
|
60
|
+
hash_for_smart_path *object_url_options(symbol, alternate_object.first)
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def new_object_url
|
|
65
|
+
smart_url *new_object_url_options
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def new_object_path
|
|
69
|
+
smart_path *new_object_url_options
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def hash_for_new_object_url
|
|
73
|
+
hash_for_smart_url *new_object_url_options
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def hash_for_new_object_path
|
|
77
|
+
hash_for_smart_path *new_object_url_options
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def collection_url
|
|
81
|
+
smart_url *collection_url_options
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def collection_path
|
|
85
|
+
smart_path *collection_url_options
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def hash_for_collection_url
|
|
89
|
+
hash_for_smart_url *collection_url_options
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def hash_for_collection_path
|
|
93
|
+
hash_for_smart_path *collection_url_options
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# Used internally to provide the options to smart_url from Urligence.
|
|
97
|
+
#
|
|
98
|
+
def collection_url_options
|
|
99
|
+
namespaces + [parent_url_options, route_name.to_s.pluralize.to_sym]
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
# Used internally to provide the options to smart_url from Urligence.
|
|
103
|
+
#
|
|
104
|
+
def object_url_options(action_prefix = nil, alternate_object = nil)
|
|
105
|
+
[action_prefix] + namespaces + [parent_url_options, [route_name.to_sym, alternate_object || object]]
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# Used internally to provide the options to smart_url from Urligence.
|
|
109
|
+
#
|
|
110
|
+
def new_object_url_options
|
|
111
|
+
[:new] + namespaces + [parent_url_options, route_name.to_sym]
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def parent_url_options
|
|
115
|
+
if parent?
|
|
116
|
+
parent_singleton? ? parent_type.to_sym : [parent_type.to_sym, parent_object]
|
|
117
|
+
else
|
|
118
|
+
nil
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
# Returns all of the current namespaces of the current controller, symbolized, in array form.
|
|
123
|
+
#
|
|
124
|
+
def namespaces
|
|
125
|
+
names = self.class.name.split("::")
|
|
126
|
+
names.pop
|
|
127
|
+
|
|
128
|
+
names.map(&:underscore).map(&:to_sym)
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module ResourceController
|
|
2
|
+
class ResponseCollector
|
|
3
|
+
|
|
4
|
+
attr_reader :responses
|
|
5
|
+
|
|
6
|
+
delegate :clear, :to => :responses
|
|
7
|
+
|
|
8
|
+
def initialize
|
|
9
|
+
@responses = []
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def method_missing(method_name, &block)
|
|
13
|
+
@responses.delete self[method_name]
|
|
14
|
+
@responses << [method_name, block || nil]
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def [](symbol)
|
|
18
|
+
@responses.find { |method, block| method == symbol }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def dup
|
|
22
|
+
returning ResponseCollector.new do |duplicate|
|
|
23
|
+
duplicate.instance_variable_set(:@responses, responses.dup)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module ResourceController
|
|
2
|
+
|
|
3
|
+
# == ResourceController::Singleton
|
|
4
|
+
#
|
|
5
|
+
# Inherit from this class to create your RESTful singleton controller. See the README for usage.
|
|
6
|
+
#
|
|
7
|
+
class Singleton < ::ApplicationController
|
|
8
|
+
unloadable
|
|
9
|
+
|
|
10
|
+
def self.inherited(subclass)
|
|
11
|
+
super
|
|
12
|
+
subclass.class_eval { resource_controller :singleton }
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
data/lib/urligence.rb
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
module Urligence
|
|
2
|
+
def smart_url(*objects)
|
|
3
|
+
urligence(*objects.push(:url))
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
def smart_path(*objects)
|
|
7
|
+
urligence(*objects.push(:path))
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def hash_for_smart_url(*objects)
|
|
11
|
+
urligence(*objects.unshift(:hash_for).push(:url).push({:type => :hash}))
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def hash_for_smart_path(*objects)
|
|
15
|
+
urligence(*objects.unshift(:hash_for).push(:path).push({:type => :hash}))
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def urligence(*objects)
|
|
19
|
+
config = {}
|
|
20
|
+
config.merge!(objects.pop) if objects.last.is_a?(Hash)
|
|
21
|
+
|
|
22
|
+
objects.reject! { |object| object.nil? }
|
|
23
|
+
|
|
24
|
+
url_fragments = objects.collect do |obj|
|
|
25
|
+
if obj.is_a? Symbol
|
|
26
|
+
obj
|
|
27
|
+
elsif obj.is_a? Array
|
|
28
|
+
obj.first
|
|
29
|
+
else
|
|
30
|
+
obj.class.name.underscore.to_sym
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
unless config[:type] == :hash
|
|
35
|
+
send url_fragments.join("_"), *objects.flatten.select { |obj| !obj.is_a? Symbol }
|
|
36
|
+
else
|
|
37
|
+
params = {}
|
|
38
|
+
unparsed_params = objects.select { |obj| !obj.is_a? Symbol }
|
|
39
|
+
unparsed_params.each_with_index do |obj, i|
|
|
40
|
+
unless i == (unparsed_params.length-1)
|
|
41
|
+
params.merge!((obj.is_a? Array) ? {"#{obj.first}_id".to_sym => obj[1].to_param} : {"#{obj.class.name.underscore}_id".to_sym => obj.to_param})
|
|
42
|
+
else
|
|
43
|
+
params.merge!((obj.is_a? Array) ? {:id => obj[1].to_param} : {:id => obj.to_param})
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
send url_fragments.join("_"), params
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
data/rails/init.rb
ADDED
data/test/Rakefile
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Add your own tasks in files placed in lib/tasks ending in .rake,
|
|
2
|
+
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
|
|
3
|
+
|
|
4
|
+
require(File.join(File.dirname(__FILE__), 'config', 'boot'))
|
|
5
|
+
|
|
6
|
+
require 'rake'
|
|
7
|
+
require 'rake/testtask'
|
|
8
|
+
require 'rake/rdoctask'
|
|
9
|
+
|
|
10
|
+
require 'tasks/rails'
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Filters added to this controller apply to all controllers in the application.
|
|
2
|
+
# Likewise, all the methods added will be available for all controllers.
|
|
3
|
+
|
|
4
|
+
class ApplicationController < ActionController::Base
|
|
5
|
+
# Pick a unique cookie name to distinguish our session data from others'
|
|
6
|
+
session :session_key => '_myapp_session'
|
|
7
|
+
end
|