aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller/base.rb
diff options
context:
space:
mode:
authorJamis Buck <jamis@37signals.com>2006-09-28 19:13:55 +0000
committerJamis Buck <jamis@37signals.com>2006-09-28 19:13:55 +0000
commitb2ede64a89a5837a047e75f21a1522324a614514 (patch)
tree8a07dea342e5291f1af43fca38a9f88dcff2585e /actionpack/lib/action_controller/base.rb
parentd6925b14fa2039ba2523c69e09f2ccad15e9016f (diff)
downloadrails-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-xactionpack/lib/action_controller/base.rb27
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