在Sinatra中检测浏览器

问题描述:

如果设备是移动设备或者浏览器不受支持,我需要知道(在.rb/.haml级别)。我不希望(或者它不会适合我的需要)在客户端解析userAgent。在Sinatra中检测浏览器

宝石browser似乎是我确切需要的。它主要用于在Rails和我无法找到西纳特拉完全正确的片段,让我分享我的解决方案:

require "browser" 

... 

get "/" 
    browser = Browser.new request.user_agent, accept_language: request.env["HTTP_ACCEPT_LANGUAGE"] 
    break haml(:mobile, locals: { reason: "you are mobile" }) if browser.device.mobile? 
    break haml(:mobile, locals: { reason: "you are not chrome" }) if not browser.chrome? 
    ... 
    haml :index 
end 
+0

你知道,'browser'解析用户代理吗?我认为这不是一种选择,因为这不适合您的需求? – spickermann

+1

@spickermann,它不是在客户端解析userAgent *的选项* - 当一些html和js已经被加载时。我想在发布内容之前识别浏览器。糟糕,忘记了代码的重要线 - 更新了答案。 – Nakilon