Skip to content

Commit

Permalink
Merge pull request #8114 from guilleiguaran/use-symbols-in-scope
Browse files Browse the repository at this point in the history
Allow setting a symbol as path in scope on routes
  • Loading branch information
pixeltrix committed Nov 22, 2012
2 parents 0134ca6 + 0d3a9e8 commit 9f68d52
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 1 deletion.
22 changes: 22 additions & 0 deletions actionpack/CHANGELOG.md
@@ -1,5 +1,27 @@
## Rails 4.0.0 (unreleased) ##

* Allow setting a symbol as path in scope on routes. This is now allowed:

scope :api do
resources :users
end

also is possible pass multiple symbols to scope to shorten multiple nested scopes:

scope :api do
scope :v1 do
resources :users
end
end

can be rewritten as:

scope :api, :v1 do
resources :users
end

*Guillermo Iguaran*

* Fix error when using a non-hash query argument named "params" in `url_for`.

Before:
Expand Down
2 changes: 1 addition & 1 deletion actionpack/lib/action_dispatch/routing/mapper.rb
Expand Up @@ -644,7 +644,7 @@ def scope(*args)
options = args.extract_options!
options = options.dup

options[:path] = args.first if args.first.is_a?(String)
options[:path] = args.flatten.join('/') if args.any?
recover = {}

options[:constraints] ||= {}
Expand Down
20 changes: 20 additions & 0 deletions actionpack/test/dispatch/routing_test.rb
Expand Up @@ -370,6 +370,14 @@ def self.call(params, request)
scope :path => 'api' do
resource :me
get '/' => 'mes#index'
scope :v2 do
resource :me, as: 'v2_me'
get '/' => 'mes#index'
end

scope :v3, :admin do
resource :me, as: 'v3_me'
end
end

get "(/:username)/followers" => "followers#index"
Expand Down Expand Up @@ -1467,6 +1475,18 @@ def test_path_scope
assert_equal 'mes#index', @response.body
end

def test_symbol_scope
get '/api/v2/me'
assert_equal 'mes#show', @response.body
assert_equal '/api/v2/me', v2_me_path

get '/api/v2'
assert_equal 'mes#index', @response.body

get '/api/v3/admin/me'
assert_equal 'mes#show', @response.body
end

def test_url_generator_for_generic_route
get 'whatever/foo/bar'
assert_equal 'foo#bar', @response.body
Expand Down

0 comments on commit 9f68d52

Please sign in to comment.