2012-07-13 84 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 

但是,這仍然沒有回答我的問題怎麼來的,我不能在我的本地複製錯誤,而且只在生產服務器發生。

相關問題