Module: ActionController::Head

Included in:
ConditionalGet
Defined in:
lib/action_controller/metal/head.rb

Instance Method Summary collapse

Instance Method Details

#head(status, options = {}) ⇒ Object

Returns 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)

head :created, location: @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

See Rack::Utils::SYMBOL_TO_STATUS_CODE for a full list of valid status symbols.



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/action_controller/metal/head.rb', line 19

def head(status, options = {})
  options, status = status, nil if status.is_a?(Hash)
  status ||= options.delete(:status) || :ok
  location = options.delete(:location)
  content_type = options.delete(:content_type)

  options.each do |key, value|
    headers[key.to_s.dasherize.split('-').each { |v| v[0] = v[0].chr.upcase }.join('-')] = value.to_s
  end

  self.status = status
  self.location = url_for(location) if location

  self.response_body = ""

  if include_content?(self.response_code)
    self.content_type = content_type || (Mime[formats.first] if formats)
    self.response.charset = false if self.response
  else
    headers.delete('Content-Type')
    headers.delete('Content-Length')
  end
  
  true
end