1

私はRails 2.3.16とRuby 1.8.7を使用しており、データベーステーブルの文字セットはutf8です。

O'Dell の DB 値があり、それを次のようにフォームに表示すると:

<%= form.text_field :last_name %>
<%= form.object.last_name %>

フォーム内のページの出力は次のようになります O&#x27;DellO'Dell

コンソールで:

>> order.customer.last_name
=> "O'Dell"

私の環境ではエンコーディングが定義されていませんが、これは Rails 2.3.8 の問題ではないようでした。アップグレードしたばかりで、この問題が発生したようです。

これを回避する簡単な方法はありますか? また、パッチ バージョンが 2.3.8 から 2.3.16 に変更されたことに関連していますか?

考えられる解決策は次のようになる可能性があることを認識しています。

config/initializers/string.rb: 

class String 
  def utf8 
    return force_encoding('utf-8') 
  end 
end 

class NilClass 
  def utf8 
    return nil 
  end 
end 



_form.html.erb: 

<%= f.text_area :field, :value => @obj.field.utf8 %>

しかし、それは非常にハックであり、これらのエンコーディングの問題が発生するすべての分野でそのハックが必要です.Rails 2.3.8ではこのような問題はありませんでしたので、そうする必要がないことを本当に望んでいます. また、この問題のためだけに Ruby をアップグレードする必要がないことを願っています。

エンコーディングがフォームに適切に表示されるようにする最善の方法は何ですか?

4

0 に答える 0