Fix a bug in url generation for generic routes.

This commit is contained in:
José Valim 2010-04-12 20:23:35 +02:00
parent 25cb21328a
commit 86defed5ad
2 changed files with 21 additions and 2 deletions

View File

@ -129,7 +129,10 @@ module ActionDispatch
{}
end
defaults[:controller] ||= @options[:controller] || default_controller
defaults[:controller] ||= default_controller
defaults.delete(:controller) if defaults[:controller].blank?
defaults.delete(:action) if defaults[:action].blank?
if defaults[:controller].blank? && segment_keys.exclude?("controller")
raise ArgumentError, "missing :controller"
@ -177,7 +180,11 @@ module ActionDispatch
end
def default_controller
@scope[:controller].to_s if @scope[:controller]
if @options[:controller]
@options[:controller].to_s
elsif @scope[:controller]
@scope[:controller].to_s
end
end
end

View File

@ -197,6 +197,8 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
resource :me
match '/' => 'mes#index'
end
match "whatever/:controller(/:action(/:id))"
end
end
@ -979,6 +981,16 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
end
end
def test_url_generator_for_generic_route
with_test_routes do
get 'whatever/foo/bar'
assert_equal 'foo#bar', @response.body
assert_equal 'http://www.example.com/whatever/foo/bar/1',
url_for(:controller => "foo", :action => "bar", :id => 1)
end
end
private
def with_test_routes
yield