Module: ActionDispatch::Http::Parameters

Extended by:
ActiveSupport::Concern
Included in:
Request
Defined in:
actionpack/lib/action_dispatch/http/parameters.rb

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

PARAMETERS_KEY =
'action_dispatch.request.path_parameters'
DEFAULT_PARSERS =
{
  Mime[:json].symbol => -> (raw_post) {
    data = ActiveSupport::JSON.decode(raw_post)
    data.is_a?(Hash) ? data : {:_json => data}
  }
}

Instance Method Summary collapse

Methods included from ActiveSupport::Concern

append_features, class_methods, extended, included

Instance Method Details

#parametersObject Also known as: params

Returns both GET and POST parameters in a single hash.


30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'actionpack/lib/action_dispatch/http/parameters.rb', line 30

def parameters
  params = get_header("action_dispatch.request.parameters")
  return params if params

  params = begin
             request_parameters.merge(query_parameters)
           rescue EOFError
             query_parameters.dup
           end
  params.merge!(path_parameters)
  set_header("action_dispatch.request.parameters", params)
  params
end

#path_parametersObject

Returns a hash with the parameters used to form the path of the request. Returned hash keys are strings:

{'action' => 'my_action', 'controller' => 'my_controller'}

61
62
63
# File 'actionpack/lib/action_dispatch/http/parameters.rb', line 61

def path_parameters
  get_header(PARAMETERS_KEY) || set_header(PARAMETERS_KEY, {})
end

#path_parameters=(parameters) ⇒ Object

:nodoc:


45
46
47
48
49
50
51
52
53
54
55
# File 'actionpack/lib/action_dispatch/http/parameters.rb', line 45

def path_parameters=(parameters) #:nodoc:
  delete_header('action_dispatch.request.parameters')

  # If any of the path parameters has an invalid encoding then
  # raise since it's likely to trigger errors further on.
  Request::Utils.check_param_encoding(parameters)

  set_header PARAMETERS_KEY, parameters
rescue Rack::Utils::ParameterTypeError, Rack::Utils::InvalidParameterError => e
  raise ActionController::BadRequest.new("Invalid path parameters: #{e.message}")
end