在Rails 3中检测移动浏览器

时间:2011-06-02 20:24:24

标签: ruby-on-rails-3

我希望在我的应用中做一些特定于移动设备的布局,并且一直在研究检测移动浏览器和提供移动特定布局的方法。

我遇到了这个:http://www.arctickiwi.com/blog/mobile-enable-your-ruby-on-rails-site-for-small-screens

但是使用一系列关键字对我来说似乎有点脆弱。如果关键字改变怎么办?任何人遇到任何宝石或插件或任何更多的未来证据策略?

3 个答案:

答案 0 :(得分:28)

最好的方法是使用一些支持的插件/ gem,例如browser 您无法使用自定义user_agents跟踪所有浏览器。 例如,Opera 11.50具有以下user_agent

Opera/9.80 (Android 2.3.7; Linux; Opera Mobi/ADR-1111021303; U; en-GB) Presto/2.9.201 Version/11.50

完全无法识别
request.user_agent =~ /Mobile|webOS/ 

答案 1 :(得分:19)

实际上可以使用更简单的正则表达式。该方法在此Railscast中概述,允许您加载不同的JS并为移动设备定义不同的页面交互。

基本上,您最终会得到一个只检查用户代理是否包含“Mobile”或“webOS”的函数:

def mobile_device?
  if session[:mobile_param]
    session[:mobile_param] == "1"
  else
    request.user_agent =~ /Mobile|webOS/
  end
end

答案 2 :(得分:4)

考虑离开这个实际的rails应用程序,只需更改设置页面样式的css,这样你只需要重写样式表

基本上,css可以检测页面宽度很小(即移动浏览器),如此

<link rel="stylesheet" href="handheld.css" 
media="only screen and (max-device width:480px)"/>

你可以使用它来拥有两个不同的css handheld.css and normal.css例如

资源

Where I got that code snippet

the article that article references