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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください