Ruby on rails Rails浏览器检测方法

Ruby on rails Rails浏览器检测方法,ruby-on-rails,ruby,user-agent,browser-detection,Ruby On Rails,Ruby,User Agent,Browser Detection,大家好,我想知道在Rails中进行浏览器检测的行业标准方法是什么?是否有一个gem、库或示例代码可以帮助确定浏览器并将类或id应用于(X)HTML的body元素?谢谢,我只是想知道每个人都用什么,是否有公认的方法来做这件事 我知道我们可以获取user.agent并解析该字符串,但我不确定这是否是一种可以接受的浏览器检测方法 另外,我不想在这里讨论功能检测,我已经在StackOverflow上读到了多个关于这一点的答案,我所要求的是你们所做的 [更新] 多亏了GitHub,我对在Rails中检查用

大家好,我想知道在Rails中进行浏览器检测的行业标准方法是什么?是否有一个gem、库或示例代码可以帮助确定浏览器并将类或id应用于(X)HTML的body元素?谢谢,我只是想知道每个人都用什么,是否有公认的方法来做这件事

我知道我们可以获取user.agent并解析该字符串,但我不确定这是否是一种可以接受的浏览器检测方法

另外,我不想在这里讨论功能检测,我已经在StackOverflow上读到了多个关于这一点的答案,我所要求的是你们所做的

[更新]

多亏了GitHub,我对在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

请尝试
request.env['HTTP\u USER\u AGENT']
,这将返回客户端的用户代理。还有一个快速助手发布在GitHub的ruby库上:

我自己用它,它的工作方式和广告上的一样。对于您的用例,您可能可以从Rails项目或类似项目中的helper方法中调用该库


也就是说,我不完全确定HTTP\u USER\u代理是否暴露于Rails助手方法。如果没有公开,您可以始终将控制器方法公开为助手(通过使用
AbstractController::Helpers::ClassMethods\helper\u方法
).

gem是专门为Rails中的浏览器检测而设计的。

我尝试了HTTP\u REFERER,但没有返回任何内容,因此我使用了HTTP\u USER\u代理,它返回了正确的用户代理,但我正在寻找人们用来解析此字符串的特定方法,例如,像一个定制的正则表达式或为你做这件事的库,有点像一个助手。引用者与用户代理无关。这是引用资源的地方(例如,哪个url加载了一个图像或哪个其他页面加载了该页面,等等)。感谢您的引用,我已经使用该库创建了我自己的。我很好奇。。。您在您的版本库中添加了什么?源代码在什么地方可用吗?我不知道gem,它对我帮助很大!对于平板电脑,它只知道ipad和android,到今天为止,我们已经在大数据应用程序中广泛使用了它;非常好。你甚至可以对它稍加修改以屏蔽机器人;我相信我提出了一个拉取请求,并且能够这样做。注意:Ruby 1.9+只有AFAICTbrowser才适用于Ruby版本>=2.5.0