Rails浏览器检测方法

嘿,大家好,我想知道在Rails中做浏览器检测的标准是什么? 是否有gem,库或示例代码可以帮助确定浏览器并将类或id应用到(X)HTML的body元素? 谢谢,我只是想知道每个人都使用什么,是否有接受的方法呢?

我知道我们可以得到user.agent并parsing该string,但我不确定这是否是一种可接受的方式来执行浏览器检测。

另外,我没有试图在这里辩论function检测,我已经阅读了StackOverflow的多个答案,我所要求的只是你们做了什么。

[UPDATE]

所以感谢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 

在GitHub上有一个库ruby库: https : //github.com/gshutler/useragent

我自己使用它,到目前为止它已经广告了。 对于你的用例,你可以在你的Rails项目中使用一个辅助方法或类似的方法来调用这个库。

也就是说,我不完全确定HTTP_USER_AGENT是否暴露给Rails辅助方法。 如果没有公开,你总是可以使用一个控制器方法作为帮助器(通过使用AbstractController::Helpers::ClassMethods#helper_method )。

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

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