module StringTools::ActionControllerExtension

Public Instance Methods

accepts_non_utf8_param(*args)
accepts_non_utf8_params(*args) click to toggle source
# File lib/string_tools.rb, line 56
def accepts_non_utf8_params(*args)
  args.each do |arg|
    next unless arg.is_a?(Symbol) || arg.is_a?(::String)
    arg = arg.to_sym

    class_eval do
      before_filter { |controller|
        decode = lambda { |s|
          if s.is_a?(Hash)
            s.to_a.map { |k, v| [k, StringTools.to_utf8(v)]}.to_hash
          elsif s.is_a?(Array)
            s.map { |v| StringTools.to_utf8(v) }
          else
            StringTools.to_utf8(s)
          end
        }

        controller.params[arg] = decode.call(controller.params[arg]) unless controller.params[arg].nil?
      }
    end
  end
end
Also aliased as: accepts_non_utf8_param