Rails3.2.3とRuby1.9.3を使用しています。タイトルと説明を受け入れるPostというモデルがあります。サイトのフロントエンドは、ajaxリクエストを通じてバックエンドから送信された情報を受け取ります。フォームに記入するとき、
title: foo
content: foobar
送信すると、フロントエンドから問題なくデータを表示できます。
ただし、たとえば、フォームからutf8以外のデータを送信する場合は常に、次のようになります。
title: foo
content: “foobar”
フォームをレンダリングしようとすると、次のエラーが発生します。
ActionView::Template::Error (incompatible encoding regexp match (UTF-8 regexp with ASCII-8BIT string))
私の.js.erbファイルは次のようになります。
$("#my_post").html('<%= escape_javascript(render :partial => 'post') %>');
これはエンコーディングの問題だと思いますが、最善の方法で処理する方法がわかりません。私はいくつかのオプションを考えました:
- iconvライブラリを使用して非utf8を削除します-これは、アプリケーション内のすべてのモデルに対してbefore_saveフィルターを介して行います
- ドキュメントにutf-8が含まれていることをjsの先頭で指定します(これが機能するかどうかはわかりません)
- 私のフォームで使用
accept-charset="UTF-8"
して、ブラウザにutf-8以外のコンテンツの送信を回避するように強制します。
これらのソリューションが役立つかどうかさえわかりません。これを行うための最も効率的な方法は次のとおりです。ありがとう!