Rails 4.1.2 json阿拉伯语支持

时间:2014-12-29 09:35:35

标签: ruby-on-rails json activesupport

我使用Rails 4.1.2,以及gem 'activesupport-json_encoder', github: 'rails/activesupport-json_encoder'gem 'algoliasearch-rails'。问题是当我在具有阿拉伯字符的ActiveRecord对象上调用.to_json时,它会用替换任何阿拉伯字符。

 > p = Product.find 100
 #<Product id: 93038, name: "Men Jacket , front zipper, double colour light gre...", brand: "\xD8\xA7\xD8\xAE\xD8\xB1\xD9\x8A">
 > puts p.to_json
 {"id":93038,"name":"Men Jacket , front zipper, double colour light grey sizeXL","brand":"��������"}

2 个答案:

答案 0 :(得分:0)

您可以按以下方式覆盖产品型号中的as_json方法:

def as_json(options)
  hash = self.serializable_hash.delete('brand')
  super(hash.merge({brand: ActiveSupport::JSON.encode(self.brand)})
end

然后使用以下内容:

p = Product.find 100
puts p.as_json

答案 1 :(得分:0)

我通过强迫&#34; utf-8&#34;来修复它。编码,在https://github.com/rails/activesupport-json_encoder/blob/master/lib/active_support/json/encoding/active_support_encoder.rb#L127中。我在这里分发了宝石https://github.com/mahmoud-abdelaziz/activesupport-json_encoder

添加gem 'activesupport-json_encoder', github: 'mahmoud-abdelaziz/activesupport-json_encoder',问题就解决了。