51 votes

Méthodes de détection du navigateur Rails

Salut tout le monde, je me demandais quelles sont les méthodes standard dans l'industrie pour faire de la détection du navigateur dans les Rails? Est-il un bijou, une bibliothèque ou un exemple de code quelque part qui peut aider à déterminer le navigateur et appliquer une classe ou l'id de l'élément de corps de le (X)HTML? Merci, je me demandais simplement ce que tout le monde utilise, et s'il est accepté méthode de faire cela?

Je sais que nous pouvons obtenir de l'utilisateur.agent et analyser cette chaîne, mais je ne suis pas sûr si c'est c'est une manière acceptable de faire la détection du navigateur.

Aussi, je ne suis pas en train de débattre de la détection de fonctionnalité ici, j'ai lu plusieurs réponses pour que sur StackOverflow, tout ce que je demande est ce que vous les gars ont fait.

[Mise à JOUR]

Ainsi, grâce à faunzy sur GitHub, j'ai sorte de comprendre un peu plus sur la vérification de l'agent de l'utilisateur dans les Rails, mais toujours pas sûr si c'est la meilleure façon d'aller à ce sujet dans Rails 3. Mais voici ce que j'ai obtenu jusqu'à présent:

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

59voto

Rob Points 2006

La gemme du navigateur est spécialement conçue pour la détection du navigateur dans Rails.

23voto

Christoph Schiessl Points 3672

Il y a la bibliothèque ruby bibliothèque de plus sur GitHub: https://github.com/josh/useragent

J'utilise moi-même, et ça fonctionne comme annoncé jusqu'à présent. Pour votre cas, vous pourriez probablement appel de la bibliothèque de l'intérieur d'une méthode d'aide dans vos Rails de projet ou quelque chose de similaire.

Cela dit, je ne suis pas complètement sûr si l' HTTP_USER_AGENT est exposée à des Rails méthodes d'aide. Dans le cas où il n'est pas exposé, vous avez toujours la possibilité d'exposer une méthode de contrôleur comme une aide (à l'aide d' AbstractController::Helpers::ClassMethods#helper_method).

5voto

farnoy Points 1410

Essayez request.env['HTTP_USER_AGENT'] , cela renverra l'agent utilisateur de votre client. Il y a aussi une aide rapide publiée par Hubert Łępicki

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X