From 9e5d64b3bbc9a1a4b15c4728d65dbce226ca9512 Mon Sep 17 00:00:00 2001 From: Nicholas Seckar Date: Sun, 11 Sep 2005 13:45:55 +0000 Subject: 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 --- actionpack/CHANGELOG | 2 ++ actionpack/lib/action_controller/routing.rb | 5 ++++- actionpack/test/controller/routing_test.rb | 6 ++++++ 3 files changed, 12 insertions(+), 1 deletion(-) (limited to 'actionpack') 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 -- cgit v1.2.3