いや~はまりまくりました。
jpmobileです。
先に言っておきます。
jpmobileは何も悪くありません。
すごくいいプラグインです!!
悪いのは私です!!!!
で、何がはまったって、エンコードです。
jpmobileにはすばらしいフィルタ処理のmobile_filterが存在します。
出力時はシステムのエンコードから携帯の対応エンコードに変換、
入力時には携帯のエンコードからシステムのエンコードに変換してくれるすばらしいフィルタです。
既存のシステムを携帯対応するというのがミッションです。
で、ApplicationContorllerで携帯かどうかの判別を行い、
携帯だったら専用のコントローラに移動するという方式で進めていきました。
携帯用のコントローラにスーパークラスを設定して、そこでmobile_filterを定義、
携帯でアクセスすれば自動でエンコード変換してくれるよね~
と試してみると、これがダメ。
むむ、と思い、after_filterで強制的に出力をshift-jisにしてみると成功。
で、そのまま開発を進めます。
問題が発生したのはフォームで日本語を送ったときです。
なんかエンコードが変です。
いろいろ変換して見るもダメ。
何がどうなってるんだ~と3時間。
オチは、after_filterで強制的にshift-jisにしていたところ。
jpmobileのmobile_filterはきちんと働いていたのに、
ApplicationControllerのbefore_filterで強制的にUTF8に変換していたのが原因で、
きちんと表示されていなかった。
とほほ。
ApplicationContorllerのエンコード指定のところに、
携帯アクセスかどうかの分岐を入れて、携帯以外はUTF-8にすることで解決。
とほほ。
とほほほほほほ。
教訓
まず、自分が過去に書いたコードを疑えPR