Ruby 如何从提交到Rails的所有数据中删除无效字节序列?

Ruby 如何从提交到Rails的所有数据中删除无效字节序列?,ruby,ruby-on-rails-3,encoding,Ruby,Ruby On Rails 3,Encoding,我有一个运行在Ruby 1.9.3上的Rails 3.2.3应用程序。 当我试图显示通过后端表单提交的某些字符时,会收到以下错误消息 ActionView::Template::错误不兼容编码regexp将UTF-8 regexp与ASCII-8BIT字符串匹配 如何筛选通过后端提交的所有数据上的所有不兼容编码/无效字节序列 谢谢 ApplicationController中的before\u过滤器如何 这个modules方法应该递归地迭代散列中的所有值,并用块返回的值替换它们 module R

我有一个运行在Ruby 1.9.3上的Rails 3.2.3应用程序。 当我试图显示通过后端表单提交的某些字符时,会收到以下错误消息

ActionView::Template::错误不兼容编码regexp将UTF-8 regexp与ASCII-8BIT字符串匹配

如何筛选通过后端提交的所有数据上的所有不兼容编码/无效字节序列

谢谢

ApplicationController中的before\u过滤器如何

这个modules方法应该递归地迭代散列中的所有值,并用块返回的值替换它们

module RecurseHash
  def recurse!(&blk)
    __recurse(self, &blk) if block_given?
  end

  private
  def __recurse(obj, &blk)
    if obj.is_a? Array
      obj = obj.map { |val| __recurse(val, &blk) }
    elsif obj.is_a? Hash
      obj.each_pair { |key, val| obj[key] = __recurse(val, &blk) }
    else
      obj = blk.call(obj)
    end
    obj
  end
end

class Hash
  include RecurseHash
end



class ApplicationController < ActionController::Base
  before_filter :force_utf8

  def force_utf8
    params.recurse! do |val|
      val.force_encoding 'UTF-8'
    end
  end
end
注意:如果块不返回任何内容,则该值将替换为nil。您可以使用它来过滤某些参数。

ApplicationController中的before\u过滤器如何

这个modules方法应该递归地迭代散列中的所有值,并用块返回的值替换它们

module RecurseHash
  def recurse!(&blk)
    __recurse(self, &blk) if block_given?
  end

  private
  def __recurse(obj, &blk)
    if obj.is_a? Array
      obj = obj.map { |val| __recurse(val, &blk) }
    elsif obj.is_a? Hash
      obj.each_pair { |key, val| obj[key] = __recurse(val, &blk) }
    else
      obj = blk.call(obj)
    end
    obj
  end
end

class Hash
  include RecurseHash
end



class ApplicationController < ActionController::Base
  before_filter :force_utf8

  def force_utf8
    params.recurse! do |val|
      val.force_encoding 'UTF-8'
    end
  end
end
注意:如果块不返回任何内容,则该值将替换为nil。您可以使用它来过滤某些参数