2011-01-16 13 views
51

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

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

また、私はここで機能の検出を議論しようとしていません、私はStackOverflowで複数の答えを読んできました。私が求めているのは、皆さんがやったことです。これはRailsの中でそれについて移動するための最良の方法である場合は、まだ

[UPDATE]

GitHubの上faunzyのおかげで、私は一種のレールでユーザーエージェントをチェックについて少し理解してきたので、しかし、わかりません

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 

答えて

23

によって投稿迅速なヘルパーがあり、ライブラリのRubyライブラリはGitHubのに終わったもあります。あなたのユースケースでは、Railsプロジェクトのヘルパーメソッドなどから、おそらくライブラリを呼び出すことができます。

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

+0

参考になりました、私は自分自身を作成するためにそのライブラリを使用しました。 – alvincrespo

+4

私は興味があります...ライブラリのあなたのバージョンで何を追加しましたか?ソースコードはどこかで入手できますか? –

+0

リンクが無効です。 :x –

4

が、これはあなたのクライアントのユーザーエージェントを返します、request.env['HTTP_USER_AGENT']を試してみてください。3.しかし、ここでは、私がこれまで得てきたものです。 https://github.com/gshutler/useragent私はそれを自分自身を使用し

、これまで宣伝として、それが働いている:Hubert Łępicki

+0

私はHTTP_REFERERを試しましたが、何も返されなかったので、HTTP_USER_AGENTを使用して正しいユーザーエージェントを返しました。しかし、カスタムの組み込み正規表現のように、この文字列を解析する特定のメソッドを探していますあなたのためにこれを行う存在するライブラリです。ヘルパーのようなものです。 – alvincrespo

+0

リファラーはユーザエージェントに関連していません。これはリソースが参照されている場所です(例えば、URLが画像をロードしたか、他のページがページをロードしたかなど) – xinit

+0

申し訳ありませんが、私はユーザーエージェントを意味しました。そして、私はあなたと同じものにリンクしました... – farnoy

57

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

+0

それは私を大きく助けた宝石について知りませんでした! –

+0

錠剤の場合は今日のipadとアンドロイドしか知りません – Evan

+0

私たちは大きなデータアプリでこれを広範囲に使用しています。とても良いです。ボットを選別するために少し修正することさえできます。私はそうする能力を持って引っ張り要求をしたと信じています。 – rcd

関連する問題