Rails怪奇現象その1
In Place Editorを使ったら,IEだと「Saving..」の表示のまま返ってこない…
これがどこでも再現するバグとも思えないのだが,Railsが1.1.6だから?
サーバまではデータが渡っているので,IEはレスポンスを正しく受け取れていないようだ。となると怪しいのはレスポンスヘッダか。一度Firefoxに戻ってFirebugsで追いかけてみると,レスポンスヘッダのContent-Typeが空っぽ。というか「; charset=」なんていう中途半端な値になってる。Rails側は render :text=>'response' なんだけど,コンテンツヘッダがつかないのか。application.rbの中のbefore_filterで,charsetを設定するメソッドを呼んでいたので一時的に変更してみる。
def set_charset headers["Content-Type"] = 'text/html; charset=UTF-8' unless request.xhr? end
こんな風にしてみた。
def set_charset headers["Content-Type"] = 'text/html; charset=UTF-8' end
するとうまくいくではないですか。しかし,このままじゃrjsが使えなくなる。render :text でコンテンツタイプって指定できないのかなあ。うーむ。
【追記】
かなり強引なのだが,以下のようにしてみた。
def set_charset headers["Content-Type"] = 'text/html' unless headers["Content-Type"] headers["Content-Type"] = 'text/html' if headers["Content-Type"].split(';')[0].blank? if headers["Content-Type"] =~ /^text\// headers["Content-Type"] += "; charset=utf-8" end end