Skip to content

Commit

Permalink
Move regexps in options hash to :constraints hash so that they are pu…
Browse files Browse the repository at this point in the history
…shed into the scope [#5208 state:resolved]

Signed-off-by: José Valim <jose.valim@gmail.com>
  • Loading branch information
pixeltrix authored and josevalim committed Aug 19, 2010
1 parent 0cc483a commit c019db8
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 0 deletions.
4 changes: 4 additions & 0 deletions actionpack/lib/action_dispatch/routing/mapper.rb
Expand Up @@ -774,6 +774,10 @@ def apply_common_behavior_for(method, resources, options, &block)
return true
end

options.each do |k,v|
(options[:constraints] ||= {})[k] = options.delete(k) if options[k].is_a?(Regexp)
end

scope_options = options.slice!(*RESOURCE_OPTIONS)
unless scope_options.empty?
scope(scope_options) do
Expand Down
22 changes: 22 additions & 0 deletions actionpack/test/dispatch/routing_test.rb
Expand Up @@ -379,6 +379,12 @@ def self.matches?(request)
end
end

namespace :wiki do
resources :articles, :id => /[^\/]+/ do
resources :comments, :only => [:create, :new]
end
end

scope :only => :show do
namespace :only do
resources :sectors, :only => :index do
Expand Down Expand Up @@ -1962,6 +1968,22 @@ def test_greedy_resource_id_regexp_doesnt_match_edit_and_custom_action
end
end

def test_resource_constraints_are_pushed_to_scope
with_test_routes do
get '/wiki/articles/Ruby_on_Rails_3.0'
assert_equal 'wiki/articles#show', @response.body
assert_equal '/wiki/articles/Ruby_on_Rails_3.0', wiki_article_path(:id => 'Ruby_on_Rails_3.0')

get '/wiki/articles/Ruby_on_Rails_3.0/comments/new'
assert_equal 'wiki/comments#new', @response.body
assert_equal '/wiki/articles/Ruby_on_Rails_3.0/comments/new', new_wiki_article_comment_path(:article_id => 'Ruby_on_Rails_3.0')

post '/wiki/articles/Ruby_on_Rails_3.0/comments'
assert_equal 'wiki/comments#create', @response.body
assert_equal '/wiki/articles/Ruby_on_Rails_3.0/comments', wiki_article_comments_path(:article_id => 'Ruby_on_Rails_3.0')
end
end

private
def with_test_routes
yield
Expand Down

0 comments on commit c019db8

Please sign in to comment.