diff options
author | Jamis Buck <jamis@37signals.com> | 2006-04-13 05:44:23 +0000 |
---|---|---|
committer | Jamis Buck <jamis@37signals.com> | 2006-04-13 05:44:23 +0000 |
commit | 7a8883eee99a48737a46cd3049f7642946414a41 (patch) | |
tree | 802e8feff3b6aaeac300c1e615e8dba6a3caae7c | |
parent | c71607e29c4ab5cd7b4ac7d3ef902868ab1cebf7 (diff) | |
download | rails-7a8883eee99a48737a46cd3049f7642946414a41.tar.gz rails-7a8883eee99a48737a46cd3049f7642946414a41.tar.bz2 rails-7a8883eee99a48737a46cd3049f7642946414a41.zip |
Modify routing so that you can say :require => { :method => :post } for a route, and the route will never be selected unless the request method is POST. Only works for route recognition, not for route generation.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4209 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
-rw-r--r-- | actionpack/CHANGELOG | 2 | ||||
-rw-r--r-- | actionpack/lib/action_controller/routing.rb | 17 |
2 files changed, 14 insertions, 5 deletions
diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index 09053fc5d8..2ed9681459 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Modify routing so that you can say :require => { :method => :post } for a route, and the route will never be selected unless the request method is POST. Only works for route recognition, not for route generation. [Jamis Buck] + * Added :add_headers option to verify which merges a hash of name/value pairs into the response's headers hash if the prerequisites cannot be satisfied. [Sam Stephenson] ex. verify :only => :speak, :method => :post, :render => { :status => 405, :text => "Must be post" }, diff --git a/actionpack/lib/action_controller/routing.rb b/actionpack/lib/action_controller/routing.rb index d6e287e0ba..b25f99c37f 100644 --- a/actionpack/lib/action_controller/routing.rb +++ b/actionpack/lib/action_controller/routing.rb @@ -306,6 +306,7 @@ module ActionController initialize_components path defaults, conditions = initialize_hashes options.dup @defaults = defaults.dup + @request_method = conditions.delete(:method) configure_components(defaults, conditions) add_default_requirements initialize_keys @@ -342,8 +343,12 @@ module ActionController else g.constant_result(key, value) end end - - g.go + + if @request_method + g.if("@request.method == :#{@request_method}") { |gp| gp.go } + else + g.go + end generator end @@ -469,17 +474,19 @@ module ActionController end def recognize(request) - string_path = request.path + @request = request + + string_path = @request.path string_path.chomp! if string_path[0] == ?/ path = string_path.split '/' path.shift hash = recognize_path(path) - return recognition_failed(request) unless hash && hash['controller'] + return recognition_failed(@request) unless hash && hash['controller'] controller = hash['controller'] hash['controller'] = controller.controller_path - request.path_parameters = hash + @request.path_parameters = hash controller.new end alias :recognize! :recognize |