Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Detecting mobile browsers in Rails 3

I'm looking to do some mobile-specific layouts in my app, and have been researching ways to detect mobile browsers and serve mobile specific layouts.

I came across this: http://www.arctickiwi.com/blog/mobile-enable-your-ruby-on-rails-site-for-small-screens

But using an array of keywords seems a little fragile to me. What if the keywords change? Anyone come across any gems or plugins or any more future proof strategies?

like image 945
Slick23 Avatar asked Jun 02 '11 20:06

Slick23


3 Answers

The best way is to use some supported plugin/gem, like browser You're just unable to follow all browsers with their custom user_agents. For example Opera 11.50 has the following user_agent:

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

It is totally unrecognizable with

request.user_agent =~ /Mobile|webOS/ 
like image 168
gshilin Avatar answered Oct 15 '22 23:10

gshilin


There is actually a much simpler regular expression you can use. The approach is outlined in this Railscast and allows you to load different JS and define different page interactions for mobile devices.

Essentially you end up with a function that simply checks that the user-agent contains 'Mobile' or 'webOS':

def mobile_device?
  if session[:mobile_param]
    session[:mobile_param] == "1"
  else
    request.user_agent =~ /Mobile|webOS/
  end
end
like image 26
Pan Thomakos Avatar answered Oct 16 '22 00:10

Pan Thomakos


Consider going away from the actual rails app on this one, and just change the css which is styling your page, that way you only have to rewrite the style sheet

Basically the css can detect when the page width is small (ie mobile browser) like this

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

and you can use this to have two different css handheld.css and normal.css for instance

Resources

Where I got that code snippet

and the article that article references

like image 4
Paul Kaplan Avatar answered Oct 16 '22 01:10

Paul Kaplan