Module: StringTools::ActionControllerExtension

Defined in:
lib/string_tools.rb

Instance Method Summary collapse

Instance Method Details

#accepts_non_utf8_params(*args) ⇒ Object Also known as: accepts_non_utf8_param



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# 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