2012-07-13 93 views
0

我一直在我们的应用程序的index.rhtml有这个问题。基本上,我在页面中有一个动态div w/c显示当前登录的用户项目的所有信息。Rails 2.3 + Ruby 1.8.7不兼容的字符编码:UTF-8和ASCII-8BIT

这里是哪里发生错误的代码段:

<% projects.each do |p| %> 
    <tr> 
    <td><div><%=h p.location %></div></td> <- ERROR 
    ... 

注意p.location只返回一个字符串。

奇怪的是,这个错误不会在我的本地应用程序副本中弹出,而只会出现在生产服务器上。我的本地副本使用与生产服务器相同的环境(gem,Ruby版本,Rails版本)。

这里是我的宝石列表

*** LOCAL GEMS *** 
actionmailer (2.3.5) 
actionpack (2.3.5) 
activerecord (2.3.5) 
activeresource (2.3.5) 
activesupport (2.3.5) 
bcrypt-ruby (2.1.2) 
bson (0.20.1) 
bundler (1.0.22) 
composite_primary_keys (2.3.5.1) 
factory_girl (2.5.1) 
fastthread (1.0.7) 
ferret (0.11.6) 
jnunemaker-validatable (1.8.3) 
mocha (0.9.8) 
mongo (0.19.3) 
mongo_mapper (0.7.3) 
mysql (2.8.1) 
rack (1.0.1) 
rails (2.3.5) 
rake (0.9.2.2) 
redgreen (1.2.2) 
rubygems-bundler (0.2.8) 
rvm (1.9.2) 
thoughtbot-shoulda (2.11.1) 

回答

0

发现用iconv固定它的哈克的方式。基本上我强迫它进行utf-8编码。

在模型:

class Project < ActiveRecord::Base 
... 

    def location 
    ::Iconv.conv('UTF-8//IGNORE', 'UTF-8', self[:location] + ' ')[0..-2] 
    end 

... 
end 

但是,这仍然没有回答我的问题怎么来的,我不能在我的本地复制错误,而且只在生产服务器发生。

相关问题