ruby-Rails浏览器检测方法

大家好,我想知道行业中在Rails中进行浏览器检测的标准方法是什么? 在某处是否有gem,库或示例代码可以帮助确定浏览器并将类或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
3个解决方案
59 votes

浏览器gem专为在Rails中检测浏览器而设计。

Rob answered 2020-01-23T05:20:07Z
23 votes

GitHub上有库ruby库:[https://github.com/gshutler/useragent]

我自己使用它,到目前为止,它的工作如广告所示。 对于您的用例,您可能可以从Rails项目或类似项目的帮助器方法中调用该库。

也就是说,我不确定HTTP_USER_AGENT是否暴露于Rails辅助方法中。 如果未公开,则始终可以将控制器方法公开为辅助方法(通过使用AbstractController::Helpers::ClassMethods#helper_method)。

Christoph Schiessl answered 2020-01-23T05:19:47Z
5 votes

尝试request.env['HTTP_USER_AGENT'],这将返回您客户的用户代理。 HubertŁępicki发布了一个快速帮助器

farnoy answered 2020-01-23T05:20:27Z
translate from https://stackoverflow.com:/questions/4707400/rails-browser-detection-methods