ruby - 在 Sinatra 中检测浏览器

标签 ruby sinatra backwards-compatibility

我需要知道(在 .rb/.haml 级别)设备是否是移动设备或浏览器是否不受支持。我不想(或者它不能很好地满足我的需要)在客户端解析 userAgent。

最佳答案

gem browser似乎正是我所需要的。它主要用于 Rails,我找不到完全正确的 Sinatra 片段,所以我分享我的解决方案:

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

关于ruby - 在 Sinatra 中检测浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43525921/

相关文章:

http - HTTP/1.0 还在使用吗?

ruby-on-rails - 为 nil :NilClass Ruby on Rails Guide 获取未定义的方法 `errors'

ruby-on-rails - 覆盖 ruby​​ 类中的 module_function 以访问原始文件

Ruby:在 block 中使用 self?

ruby - 真正的 sinatra(ruby/rack) after_filter 最快的方法是什么?

java - 如何通过不允许 java 泛型中的原语来保持向后兼容性

Ruby 将数组与数组的哈希进行比较和匹配

ruby - sinatra-flash gem 不工作

ruby - 为什么我的负载中的数组在 Sinatra/Rack::Test 中被展平了?

Android Lollipop - 改变 SQLite 的行为