aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller/metal/head.rb
diff options
context:
space:
mode:
authorYehuda Katz <wycats@gmail.com>2009-10-26 17:13:43 -0700
committerYehuda Katz <wycats@gmail.com>2009-10-26 17:13:43 -0700
commitd7499f8ee8faa80d12dccae5baf5ab2acc79e77d (patch)
treec9de47c00168afcd6535def9913858791ae8e7c9 /actionpack/lib/action_controller/metal/head.rb
parent60cc86136bffc96bc62798538e08e0d28138d41c (diff)
downloadrails-d7499f8ee8faa80d12dccae5baf5ab2acc79e77d.tar.gz
rails-d7499f8ee8faa80d12dccae5baf5ab2acc79e77d.tar.bz2
rails-d7499f8ee8faa80d12dccae5baf5ab2acc79e77d.zip
Extract #head into its own module and simplify it
Diffstat (limited to 'actionpack/lib/action_controller/metal/head.rb')
-rw-r--r--actionpack/lib/action_controller/metal/head.rb27
1 files changed, 27 insertions, 0 deletions
diff --git a/actionpack/lib/action_controller/metal/head.rb b/actionpack/lib/action_controller/metal/head.rb
new file mode 100644
index 0000000000..68fa0a0402
--- /dev/null
+++ b/actionpack/lib/action_controller/metal/head.rb
@@ -0,0 +1,27 @@
+module ActionController
+ module Head
+ # 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 :created, :location => person_path(@person)
+ #
+ # It can also be used to return exceptional conditions:
+ #
+ # return head(:method_not_allowed) unless request.post?
+ # return head(:bad_request) unless valid_request?
+ # render
+ def head(status, options = {})
+ options, status = status, nil if status.is_a?(Hash)
+ status ||= options.delete(:status) || :ok
+ location = options.delete(:location)
+
+ 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, :location => location
+ end
+ end
+end \ No newline at end of file