Module: ActionDispatch::Http::Parameters
Relationships & Source Files | |
Namespace Children | |
Modules:
| |
Exceptions:
| |
Extension / Inclusion / Inheritance Descendants | |
Included In:
| |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
::ActiveSupport::Concern
|
|
Defined in: | actionpack/lib/action_dispatch/http/parameters.rb |
Constant Summary
-
DEFAULT_PARSERS =
# File 'actionpack/lib/action_dispatch/http/parameters.rb', line 12{ Mime[:json].symbol => -> (raw_post) { data = ActiveSupport::JSON.decode(raw_post) data.is_a?(Hash) ? data : { _json: data } } }
-
PARAMETERS_KEY =
# File 'actionpack/lib/action_dispatch/http/parameters.rb', line 10"action_dispatch.request.path_parameters"
Class Method Summary
::ActiveSupport::Concern
- Extended
class_methods | Define class methods from given block. |
included | Evaluate given block in context of base class, so that you can write class macros here. |
prepended | Evaluate given block in context of base class, so that you can write class macros here. |
append_features, prepend_features |
Instance Attribute Summary
-
#path_parameters
rw
Returns a hash with the parameters used to form the path of the request.
- #path_parameters=(parameters) rw Internal use only
Instance Method Summary
-
#parameters
(also: #params)
Returns both GET and POST parameters in a single hash.
-
#params
Alias for #parameters.
- #log_parse_error_once private
- #params_parsers private
- #parse_formatted_parameters(parsers) private
DSL Calls
included
[ GitHub ]27 28 29 30 31 32 33 34
# File 'actionpack/lib/action_dispatch/http/parameters.rb', line 27
included do class << self # Returns the parameter parsers. attr_reader :parameter_parsers end self.parameter_parsers = DEFAULT_PARSERS end
Instance Attribute Details
#path_parameters (rw)
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" }
# File 'actionpack/lib/action_dispatch/http/parameters.rb', line 84
def path_parameters get_header(PARAMETERS_KEY) || set_header(PARAMETERS_KEY, {}) end
#path_parameters=(parameters) (rw)
This method is for internal use only.
[ GitHub ]
# File 'actionpack/lib/action_dispatch/http/parameters.rb', line 67
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.}") end
Instance Method Details
#log_parse_error_once (private)
[ GitHub ]# File 'actionpack/lib/action_dispatch/http/parameters.rb', line 102
def log_parse_error_once @parse_error_logged ||= begin parse_logger = logger || ActiveSupport::Logger.new($stderr) parse_logger.debug <<~MSG.chomp Error occurred while parsing request parameters. Contents: #{raw_post} MSG end end
#parameters Also known as: #params
Returns both GET and POST parameters in a single hash.
# File 'actionpack/lib/action_dispatch/http/parameters.rb', line 52
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
#params
Alias for #parameters.
# File 'actionpack/lib/action_dispatch/http/parameters.rb', line 65
alias :params :parameters
#params_parsers (private)
[ GitHub ]# File 'actionpack/lib/action_dispatch/http/parameters.rb', line 114
def params_parsers ActionDispatch::Request.parameter_parsers end
#parse_formatted_parameters(parsers) (private)
[ GitHub ]# File 'actionpack/lib/action_dispatch/http/parameters.rb', line 89
def parse_formatted_parameters(parsers) return yield if content_length.zero? || content_mime_type.nil? strategy = parsers.fetch(content_mime_type.symbol) { return yield } begin strategy.call(raw_post) rescue # JSON or Ruby code block errors. log_parse_error_once raise ParseError, "Error occurred while parsing request parameters" end end