Skip to content

Commit

Permalink
This patch allows urls to be of the form :module/:controller/:action …
Browse files Browse the repository at this point in the history
…as well as :controller/:action/:id where :id is no entirely numeric by determining if what would be :module corresponds to a directory in app/controllers. If it does not then the :controller/:action/:id scheme is used.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@150 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information
dhh committed Dec 14, 2004
1 parent 605bc77 commit e5a8d8e
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion railties/lib/webrick_server.rb
Expand Up @@ -136,11 +136,20 @@ def self.parse_uri(path)
when %r{^/#{component}/#{component}/$} then
{ :module => $1, :controller => $2, :action => "index" }
when %r{^/#{component}/#{component}/#{component}$} then
{ :module => $1, :controller => $2, :action => $3 }
if DispatchServlet.modules(component).include?($1)
{ :module => $1, :controller => $2, :action => $3 }
else
{ :controller => $1, :action => $2, :id => $3 }
end
when %r{^/#{component}/#{component}/#{component}/#{id}$} then
{ :module => $1, :controller => $2, :action => $3, :id => $4 }
else
false
end
end

def self.modules(module_pattern = '[^.]+')
path = RAILS_ROOT + '/app/controllers'
Dir.entries(path).grep(/^#{module_pattern}$/).find_all {|e| File.directory?("#{path}/#{e}")}
end
end

0 comments on commit e5a8d8e

Please sign in to comment.