Class: ActionDispatch::Request::Utils::CustomParamEncoder

Inherits:
Object
  • Object
show all
Defined in:
actionpack/lib/action_dispatch/request/utils.rb

Overview

:nodoc:

Class Method Summary collapse

Class Method Details

.action_encoding_template(request, controller, action) ⇒ Object

:nodoc:



106
107
108
109
110
111
# File 'actionpack/lib/action_dispatch/request/utils.rb', line 106

def self.action_encoding_template(request, controller, action) # :nodoc:
  controller && controller.valid_encoding? &&
    request.controller_class_for(controller).action_encoding_template(action)
rescue MissingController
  nil
end

.encode(request, params, controller, action) ⇒ Object



101
102
103
104
# File 'actionpack/lib/action_dispatch/request/utils.rb', line 101

def self.encode(request, params, controller, action)
  encoding_template = action_encoding_template(request, controller, action)
  encode_for_template(params, encoding_template)
end

.encode_for_template(params, encoding_template) ⇒ Object



86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'actionpack/lib/action_dispatch/request/utils.rb', line 86

def self.encode_for_template(params, encoding_template)
  return params unless encoding_template
  params.except(:controller, :action).each do |key, value|
    ActionDispatch::Request::Utils.each_param_value(value) do |param|
      # If `param` is frozen, it comes from the router defaults
      next if param.frozen?

      if encoding_template[key.to_s]
        param.force_encoding(encoding_template[key.to_s])
      end
    end
  end
  params
end