diff options
author | Jamis Buck <jamis@37signals.com> | 2006-09-28 19:13:55 +0000 |
---|---|---|
committer | Jamis Buck <jamis@37signals.com> | 2006-09-28 19:13:55 +0000 |
commit | b2ede64a89a5837a047e75f21a1522324a614514 (patch) | |
tree | 8a07dea342e5291f1af43fca38a9f88dcff2585e /actionpack/lib/action_controller/base.rb | |
parent | d6925b14fa2039ba2523c69e09f2ccad15e9016f (diff) | |
download | rails-b2ede64a89a5837a047e75f21a1522324a614514.tar.gz rails-b2ede64a89a5837a047e75f21a1522324a614514.tar.bz2 rails-b2ede64a89a5837a047e75f21a1522324a614514.zip |
Add ActionController::Base#head for rendering empty responses. Add support for symbolic status codes, as well as for having raw integer statuses expand with their default messages.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5199 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionpack/lib/action_controller/base.rb')
-rwxr-xr-x | actionpack/lib/action_controller/base.rb | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/actionpack/lib/action_controller/base.rb b/actionpack/lib/action_controller/base.rb index e9d415085a..bd2256f44d 100755 --- a/actionpack/lib/action_controller/base.rb +++ b/actionpack/lib/action_controller/base.rb @@ -4,6 +4,7 @@ require 'action_controller/response' require 'action_controller/routing' require 'action_controller/resources' require 'action_controller/url_rewriter' +require 'action_controller/status_codes' require 'drb' require 'set' @@ -209,6 +210,7 @@ module ActionController #:nodoc: DEFAULT_RENDER_STATUS_CODE = "200 OK" include Reloadable::Deprecated + include StatusCodes # Determines whether the view has access to controller internals @request, @response, @session, and @template. # By default, it does. @@ -793,7 +795,7 @@ module ActionController #:nodoc: def render_text(text = nil, status = nil) #:nodoc: @performed_render = true - response.headers['Status'] = (status || DEFAULT_RENDER_STATUS_CODE).to_s + response.headers['Status'] = interpret_status(status || DEFAULT_RENDER_STATUS_CODE) response.body = text end @@ -830,6 +832,29 @@ module ActionController #:nodoc: end + # Return a response that has no content (merely headers). The options + # argument is interpreted to be a hash of header names and values. + # This allows you to easily return a response that consists only of + # significant headers: + # + # head :status => :created, :location => person_path(@person) + # + # It can also be used to return exceptional conditions: + # + # return head(:status => :method_not_allowed) unless request.post? + # return head(:status => :bad_request) unless valid_request? + # render + def head(options = {}) + status = interpret_status(options.delete(:status) || :ok) + + options.each do |key, value| + headers[key.to_s.dasherize.split(/-/).map { |v| v.capitalize }.join("-")] = value.to_s + end + + render :nothing => true, :status => status + end + + # Clears the rendered results, allowing for another render to be performed. def erase_render_results #:nodoc: response.body = nil |