web-dev-qa-db-fra.com

Rails Méthodes de détection du navigateur

Salut tout le monde, je me demandais quelles méthodes sont standard dans l'industrie pour faire la détection de navigateur dans Rails? Y a-t-il un joyau, une bibliothèque ou un exemple de code quelque part qui peut aider à déterminer le navigateur et à appliquer une classe ou un identifiant à l'élément body du (X) HTML? Merci, je me demande simplement ce que tout le monde utilise et s'il existe une méthode acceptée pour le faire?

Je sais que nous pouvons obtenir le user.agent et analyser cette chaîne, mais je ne sais pas si c'est une façon acceptable de faire la détection du navigateur.

De plus, je n'essaie pas de débattre de la détection des fonctionnalités ici, j'ai lu plusieurs réponses pour cela sur StackOverflow, tout ce que je demande, c'est ce que vous avez fait.

[MISE À JOUR]

Donc, grâce à faunzy sur GitHub, j'ai en quelque sorte compris un peu la vérification de l'agent utilisateur dans Rails, mais je ne sais toujours pas si c'est la meilleure façon de procéder 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
51
alvincrespo

Il y a une bibliothèque Ruby bibliothèque sur GitHub: https://github.com/gshutler/useragent

Je l'utilise moi-même et cela fonctionne comme annoncé jusqu'à présent. Pour votre cas d'utilisation, vous pourriez probablement appeler la bibliothèque à partir d'une méthode d'assistance dans votre projet Rails ou quelque chose de similaire).

Cela dit, je ne suis pas sûr que le HTTP_USER_AGENT est exposé à Rails méthodes d'assistance. Dans le cas où il n'est pas exposé, vous pouvez toujours exposer une méthode de contrôleur en tant qu'aide (en utilisant AbstractController::Helpers::ClassMethods#helper_method).

23
Christoph Schiessl

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

59
Rob

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

5
farnoy