よたらぼ
自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。

April 13, 2006 [おもひで]

[Rails] RJS テンプレート使うときは Content-Type が text/javascript じゃないといけない

遅レス経由。Ruby-GetText-Packageでは以下のようにして両方大丈夫なようにしてます。

参考までに。

module ActionController 
  class Base
   after_filter :init_content_type
   def init_content_type
     if @headers["Content-Type"] and /javascript/ =~ @headers["Content-Type"]
       @headers["Content-Type"] = "text/javascript; charset=utf-8"
     elsif ! @headers["Content-Type"]
       @headers["Content-Type"] = "text/html; charset=utf-8"
     end
   end
    :
    :
 

このタイミングで@headers["Content-Type"]にはRJSが指定したContent-Typeが入ってきますので、それをチェックしています。javascriptという文字列が来たときも置き換えをしていますが、これはcharsetを明示させるためです(オリジナルのままだとcharset指定がない)。

まぁ、でも、ホントはRuby-GetText-Package使って欲しいんですよねー。国際化しない日本語オンリーのアプリでも便利ですよ。ActiveRecord用のpoファイルを自動で生成してくれる、とか、ActionMailerが何も考えずにISO2022JPになるとか、もちろん、上記のような実装(ホントはcharsetの指定もutf-8以外に変更できる)を始め、日本固有の実装もしています(良いんです、作者が日本人なんだから!)。一度おためしアレ。


編集