Method: ActionController::ParameterEncoding::ClassMethods#param_encoding

Defined in:
actionpack/lib/action_controller/metal/parameter_encoding.rb

#param_encoding(action, param, encoding) ⇒ Object

Specify the encoding for a parameter on an action. If not specified the default is UTF-8.

You can specify a binary (ASCII_8BIT) parameter with:

class RepositoryController < ActionController::Base
  # This specifies that file_path is not UTF-8 and is instead ASCII_8BIT
  param_encoding :show, :file_path, Encoding::ASCII_8BIT

  def show
    @repo = Repository.find_by_filesystem_path params[:file_path]

    # params[:repo_name] remains UTF-8 encoded
    @repo_name = params[:repo_name]
  end

  def index
    @repositories = Repository.all
  end
end

The file_path parameter on the show action would be encoded as ASCII-8BIT, but all other arguments will remain UTF-8 encoded. This is useful in the case where an application must handle data but encoding of the data is unknown, like file system data.



79
80
81
# File 'actionpack/lib/action_controller/metal/parameter_encoding.rb', line 79

def param_encoding(action, param, encoding)
  @_parameter_encodings[action.to_s][param.to_s] = encoding
end