Last Updated: February 25, 2016
·
4.014K
· polimorfico

Force your params encoding in Rails

If you have problems with your params encodings, use a Rack middleware to encode them before rails params parsing code is executed.

First, build a class according to the signature of a rack middleware layer.

#lib/force_params_encoding.rb
class ForceParamsEncoding
  def initialize(app)
    @app = app
  end

  def call(env)
    @request = Rack::Request.new(env)
    params = @request.params
    params.each { |k, v|  params[k] = v.force_encoding("ISO-8859-1").encode("UTF-8") }
    @app.call(env)
  end
end

Then register the middleware from application.rb.

#config/application.rb
config.middleware.insert_before ActionDispatch::ParamsParser, "ForceParamsEncoding"

And that's all! ^_^

1 Response
Add your response

Did you benchmark performance of this solution?

over 1 year ago ·