« ruby-fcgiをインストールする | メイン | シェアレジ月次レポート集計 »

Rails用携帯電話ライブラリ mobile_view.rb を改良する

技術コラム : Rails で携帯用にビューを切り替えで公開されているmobile_view.rbを2箇所修正しました。

class ::ActionController::Base#is_mobile? で携帯電話からのアクセスか判定していますが、対象を増やしました。この処理はHikiを参考にしています。

# モバイルかどうかを判定
def is_mobile?
    ua = request.user_agent
    #ua =~ %r{^(DoCoMo|J-PHONE|Vodafone)/} || ua =~ %r{UP\.Browser/}
    %r[(DoCoMo|J-PHONE|Vodafone|WILLCOM|MOT-|UP\.Browser|DDIPOCKET|ASTEL|PDXGW|Palmscape|Xiino|sharp pda browser|Windows CE|L-mode)]i =~ ua
  rescue NoMethodError
    # テストのときは user_agent メソッドが存在しないので false を返しておく
    false
  end
end

次に、文字コードを変換するときに半角カタカナを全角カタカナに変換してしました。nkfは半角カタカナを自動的に全角カタカナに変換します。-x を指定して変換しないようにしました。

# レスポンスを Shift_JIS に変換
def sjis_response
  if is_mobile? && (!headers["Content-Type"] || headers["Content-Type"] =~ %r{^text/html})
    response.body = NKF.nkf('-Ws -m0 -x', response.body) if is_mobile?
    headers["Content-Type"] = "text/html; charset=Shift_JIS" if is_mobile?
  end
end

トラックバック

このエントリーのトラックバックURL:
http://www.gesource.jp/mt/mt-tb.cgi/294

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2007年02月07日 12:44に投稿されたエントリーのページです。

ひとつ前の投稿は「ruby-fcgiをインストールする」です。

次の投稿は「シェアレジ月次レポート集計」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35