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