aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicholas Seckar <nseckar@gmail.com>2005-09-11 13:45:55 +0000
committerNicholas Seckar <nseckar@gmail.com>2005-09-11 13:45:55 +0000
commit9e5d64b3bbc9a1a4b15c4728d65dbce226ca9512 (patch)
treef02f28e25bcc6442642202921f478de74fb59081
parentb646e0ddf7b1db3046d9d592060d7147f497cba3 (diff)
downloadrails-9e5d64b3bbc9a1a4b15c4728d65dbce226ca9512.tar.gz
rails-9e5d64b3bbc9a1a4b15c4728d65dbce226ca9512.tar.bz2
rails-9e5d64b3bbc9a1a4b15c4728d65dbce226ca9512.zip
Provide Named Route's hash methods as helper methods. Closes #1744.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@2204 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
-rw-r--r--actionpack/CHANGELOG2
-rw-r--r--actionpack/lib/action_controller/routing.rb5
-rw-r--r--actionpack/test/controller/routing_test.rb6
3 files changed, 12 insertions, 1 deletions
diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG
index 59cceba32e..2da874782d 100644
--- a/actionpack/CHANGELOG
+++ b/actionpack/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+* Provide Named Route's hash methods as helper methods. Closes #1744. [Nicholas Seckar, Steve Purcell]
+
* Added :multipart option to ActiveRecordHelper#form to make it possible to add file input fields #2034 [jstirk@oobleyboo.com]
* Moved auto-completion and in-place editing into the Macros module and their helper counterparts into JavaScriptMacrosHelper
diff --git a/actionpack/lib/action_controller/routing.rb b/actionpack/lib/action_controller/routing.rb
index 74a0541d9e..f06a464adb 100644
--- a/actionpack/lib/action_controller/routing.rb
+++ b/actionpack/lib/action_controller/routing.rb
@@ -621,7 +621,9 @@ module ActionController
def define_hash_access_method(route, name)
hash = known_hash_for_route(route)
- define_method(hash_access_name(name)) { hash }
+ define_method(hash_access_name(name)) do |*args|
+ args.first ? hash.merge(args.first) : hash
+ end
end
def name_route(route, name)
@@ -634,6 +636,7 @@ module ActionController
protected url_helper_name(name), hash_access_name(name)
Helpers << url_helper_name(name).to_sym
+ Helpers << hash_access_name(name).to_sym
Helpers.uniq!
end
diff --git a/actionpack/test/controller/routing_test.rb b/actionpack/test/controller/routing_test.rb
index 27433624e9..cc8b50390b 100644
--- a/actionpack/test/controller/routing_test.rb
+++ b/actionpack/test/controller/routing_test.rb
@@ -545,6 +545,7 @@ class RouteSetTests < Test::Unit::TestCase
def setup
@rs = ::ActionController::Routing::RouteSet.new
@rs.draw {|m| m.connect ':controller/:action/:id' }
+ ::ActionController::Routing::NamedRoutes.clear
end
def test_default_setup
@@ -854,6 +855,11 @@ class RouteSetTests < Test::Unit::TestCase
assert_equal ['/content/hi', []], rs.generate({:controller => 'content', :action => 'hi'})
end
+ def test_named_route_helper_array
+ test_named_route_method
+ assert_equal [:categories_url, :hash_for_categories_url], ::ActionController::Routing::NamedRoutes::Helpers
+ end
+
end
end