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 Classes: ParseError

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, prepend_features, prepended

Instance Method Details

#parametersObject Also known as: params

Returns both GET and POST parameters in a single hash.


50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'actionpack/lib/action_dispatch/http/parameters.rb', line 50

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 symbols:

{ action: "my_action", controller: "my_controller" }

82
83
84
# File 'actionpack/lib/action_dispatch/http/parameters.rb', line 82

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

#path_parameters=(parameters) ⇒ Object

:nodoc:


65
66
67
68
69
70
71
72
73
74
75
76
# File 'actionpack/lib/action_dispatch/http/parameters.rb', line 65

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

  parameters = Request::Utils.set_binary_encoding(self, parameters, parameters[:controller], parameters[:action])
  # 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