Module: ActionController::ParameterEncoding::ClassMethods
- Defined in:
- actionpack/lib/action_controller/metal/parameter_encoding.rb
Instance Method Summary collapse
-
#binary_params_for?(action) ⇒ Boolean
:nodoc:.
-
#inherited(klass) ⇒ Object
:nodoc:.
-
#setup_param_encode ⇒ Object
:nodoc:.
-
#skip_parameter_encoding(action) ⇒ Object
Specify that a given action’s parameters should all be encoded as ASCII-8BIT (it “skips” the encoding default of UTF-8).
Instance Method Details
#binary_params_for?(action) ⇒ Boolean
:nodoc:
18 19 20 |
# File 'actionpack/lib/action_controller/metal/parameter_encoding.rb', line 18 def binary_params_for?(action) # :nodoc: @_parameter_encodings[action.to_s] end |
#inherited(klass) ⇒ Object
:nodoc:
9 10 11 12 |
# File 'actionpack/lib/action_controller/metal/parameter_encoding.rb', line 9 def inherited(klass) # :nodoc: super klass.setup_param_encode end |
#setup_param_encode ⇒ Object
:nodoc:
14 15 16 |
# File 'actionpack/lib/action_controller/metal/parameter_encoding.rb', line 14 def setup_param_encode # :nodoc: @_parameter_encodings = {} end |
#skip_parameter_encoding(action) ⇒ Object
Specify that a given action’s parameters should all be encoded as ASCII-8BIT (it “skips” the encoding default of UTF-8).
For example, a controller would use it like this:
class RepositoryController < ActionController::Base
skip_parameter_encoding :show
def show
@repo = Repository.find_by_filesystem_path params[:file_path]
# `repo_name` is guaranteed to be UTF-8, but was ASCII-8BIT, so
# tag it as such
@repo_name = params[:repo_name].force_encoding 'UTF-8'
end
def index
@repositories = Repository.all
end
end
The show action in the above controller would have all parameter values encoded as ASCII-8BIT. This is useful in the case where an application must handle data but encoding of the data is unknown, like file system data.
46 47 48 |
# File 'actionpack/lib/action_controller/metal/parameter_encoding.rb', line 46 def skip_parameter_encoding(action) @_parameter_encodings[action.to_s] = true end |