2017-10-16 12 views
0

このエラーはプロダクションでのみ発生しています。 。開発中には起こらず、他のレコードでは発生しません。それだけでなく、テンプレートにはUTF文字がなく、en.ymlにはUTF文字はなく、レコードにもUTF文字はありません!私はレコードの罰金を表示/表示することができます。UTF文字のないHAMLテンプレートエラー:ActionView :: Template :: Error(互換性のない文字エンコーディング:ASCII-8BITおよびUTF-8)

272 <158>1 2017-10-16T16:57:50.349003+00:00 host heroku router - at=info method=GET path="https://stackoverflow.com/users/26/edit" host=www.host.net request_id=6d8d22cc-3050-4628-85a4-f660991b4ce3 fwd="99.99.99.99" dyno=web.1 connect=4ms service=442ms status=500 bytes=1733 protocol=https 
145 <190>1 2017-10-16T16:57:50.345615+00:00 host app web.1 - F, [2017-10-16T16:57:50.344992 #4] FATAL -- : [6d8d22cc-3050-4628-85a4-f660991b4ce3] 
228 <190>1 2017-10-16T16:57:50.345696+00:00 host app web.1 - F, [2017-10-16T16:57:50.345626 #4] FATAL -- : [6d8d22cc-3050-4628-85a4-f660991b4ce3] ActionView::Template::Error (incompatible character encodings: ASCII-8BIT and UTF-8): 
173 <190>1 2017-10-16T16:57:50.346033+00:00 host app web.1 - F, [2017-10-16T16:57:50.345973 #4] FATAL -- : [6d8d22cc-3050-4628-85a4-f660991b4ce3]  55:   .input-group 
150 <190>1 2017-10-16T16:57:50.346035+00:00 host app web.1 - [6d8d22cc-3050-4628-85a4-f660991b4ce3]  56:    - us = Country.find_by code: 'US' 
237 <190>1 2017-10-16T16:57:50.346036+00:00 host app web.1 - [6d8d22cc-3050-4628-85a4-f660991b4ce3]  57:    =cf.collection_select :country_id, [us] + Country.all, :id, :name, {prompt: t('company.country')}, class: 'form-control' 
146 <190>1 2017-10-16T16:57:50.346037+00:00 host app web.1 - [6d8d22cc-3050-4628-85a4-f660991b4ce3]  58:    .input-group-addon.required * 
143 <190>1 2017-10-16T16:57:50.346038+00:00 host app web.1 - [6d8d22cc-3050-4628-85a4-f660991b4ce3]  59: .card-header= t 'company.financials' 
118 <190>1 2017-10-16T16:57:50.346039+00:00 host app web.1 - [6d8d22cc-3050-4628-85a4-f660991b4ce3]  60: .card-block 
119 <190>1 2017-10-16T16:57:50.346040+00:00 host app web.1 - [6d8d22cc-3050-4628-85a4-f660991b4ce3]  61:  .card-text 
145 <190>1 2017-10-16T16:57:50.346087+00:00 host app web.1 - F, [2017-10-16T16:57:50.346035 #4] FATAL -- : [6d8d22cc-3050-4628-85a4-f660991b4ce3] 
259 <190>1 2017-10-16T16:57:50.346213+00:00 host app web.1 - F, [2017-10-16T16:57:50.346100 #4] FATAL -- : [6d8d22cc-3050-4628-85a4-f660991b4ce3] app/views/companies/_edit.haml:58:in `block in _app_views_companies__edit_haml___3739913582972992033_70135683358520' 

HAMLは

 .input-group 
     - us = Country.find_by code: 'US' 
     =cf.collection_select :country_id, [us] + Country.all, :id, :name, {prompt: t('company.country')}, class: 'form-control' 
     .input-group-addon.required * 

国は「サン・バルテルミー島」と「サントメ・プリンシペ」以外の任意のUTF文字を持っていないです。しかし、私はまだ他のレコードを編集し、すべての国をうまくリストすることができます。

私は(私はrequestを使用していないよ。)

いずれも機能しませんでした。私も試しました

class Application < Rails::Application 
    config.encoding = "utf-8" 

私はHeroku、Postgres、HAML、およびRails 5.0.6を使用しています。

答えて

0

ローカルサーバーを本番データベースに接続し、レコードを編集しようとしました。私は-#で全体のセクションを読み込み、それを.descriptionフィールドにロードして絞り込むまでコメントしましたが、これは間違いなくエラーメッセージにあったものでした。私はウェブデバッガを使用してフィールドを印刷しました

>> @user.company.description 
=> "... world\xE2\x80\x99s largest ..." 
>> @user.company.description.encoding 
=> #<Encoding:ASCII-8BIT> 

そして私はそれがUTF-8エンコーディングではないことを知りました。 (しかし、それは#show罰金に表示されますことを奇妙な。私はそれを復号化し、それが動作するようになりました後

class Company < ApplicationRecord 
    @@encrypted_fields = [:name, :phone, :address1, :address2, :ein, :bank, :url, :description] 
    @@encrypted_fields.each do |ef| 
    attribute ef, :encrypted 

class EncryptedType < ActiveRecord::Type::Text 
    # called when loading from DB 
    def deserialize(value) 
    value.decrypt.force_encoding('utf-8') unless value.nil? 

私は.force_encoding('utf-8')を追加したカスタムタイプに問題を追跡。

関連する問題