52

皆さん、Rails でブラウザー検出を行うために、業界内でどのような方法が標準になっているのだろうかと思っていました。ブラウザを特定し、クラスまたは ID を (X)HTML の body 要素に適用するのに役立つ宝石、ライブラリ、またはサンプル コードはどこかにありますか? ありがとう、みんなが何を使っているのか、そしてこれを行う方法が受け入れられているのかどうか疑問に思っていますか?

user.agent を取得してその文字列を解析できることはわかっていますが、それがブラウザー検出を行うための許容可能な方法であるかどうかはわかりません。

また、ここで機能検出について議論しようとしているわけではありません。StackOverflow でそれに対する複数の回答を読みました。私が求めているのは、皆さんが行ったことだけです。

[アップデート]

GitHub のfaunzyのおかげで、Rails でユーザー エージェントをチェックすることについて少し理解できましたが、Rails 3 でこれが最善の方法であるかどうかはまだわかりません。遠い:

def users_browser
user_agent =  request.env['HTTP_USER_AGENT'].downcase 
@users_browser ||= begin
  if user_agent.index('msie') && !user_agent.index('opera') && !user_agent.index('webtv')
                'ie'+user_agent[user_agent.index('msie')+5].chr
    elsif user_agent.index('gecko/')
        'gecko'
    elsif user_agent.index('opera')
        'opera'
    elsif user_agent.index('konqueror')
        'konqueror'
    elsif user_agent.index('ipod')
        'ipod'
    elsif user_agent.index('ipad')
        'ipad'
    elsif user_agent.index('iphone')
        'iphone'
    elsif user_agent.index('chrome/')
        'chrome'
    elsif user_agent.index('applewebkit/')
        'safari'
    elsif user_agent.index('googlebot/')
        'googlebot'
    elsif user_agent.index('msnbot')
        'msnbot'
    elsif user_agent.index('yahoo! slurp')
        'yahoobot'
    #Everything thinks it's mozilla, so this goes last
    elsif user_agent.index('mozilla/')
        'gecko'
    else
        'unknown'
    end
    end

    return @users_browser
end
4

3 に答える 3

62

browser gem は、Rails でのブラウザー検出用に特別に設計されています。

于 2011-12-10T21:04:03.443 に答える
23

GitHub にライブラリ ruby​​ ライブラリがあります: https://github.com/gshutler/useragent

私はそれを自分で使用していますが、これまでのところ宣伝どおりに機能しています。あなたのユースケースでは、Rails プロジェクトなどのヘルパー メソッド内からライブラリを呼び出すことができます。

とは言っても、HTTP_USER_AGENTが Rails ヘルパー メソッドに公開されているかどうかは完全にはわかりません。公開されていない場合は、( を使用して) コントローラー メソッドをいつでもヘルパーとして公開できますAbstractController::Helpers::ClassMethods#helper_method

于 2011-01-16T21:20:14.760 に答える
5

を試してくださいrequest.env['HTTP_USER_AGENT']。クライアントのユーザー エージェントが返されます。Hubert Łępickiによって投稿されたクイック ヘルパーもあります。

于 2011-01-16T19:13:42.803 に答える