05 Nov 2005
Creating Mobile or Lite Versions of Rails Apps
For my latest web project using Ruby on Rails, the idea of a mobile version arose.
Is it worth it? Well, how much more code would I have to write? 1,000 lines? Pages? Try 10. That’s right: 10.
Here’s the magic, first add the lines around the Mobile/lite version bit to config/routes.rb:
ActionController::Routing::Routes.draw do |map| # Default page is the dashboard map.connect '', :controller => "dashboard", :action => 'show' # Mobile/lite version map.connect ':mobile/', :controller => "dashboard", :action => 'show' map.connect ':mobile/:controller/:action/:id' # Install the default route as the lowest priority. map.connect ':controller/:action/:id' end
Then edit app/controllers/application.rb:
require_dependency "login_system"
class ApplicationController < ActionController::Base
include LoginSystem
helper :debug
helper :date_picker
layout :determine_layout
private
def determine_layout
if @params[:mobile]
"mobile"
else
"application"
end
end
end
And finally, create app/views/layouts/mobile.rhtml
<%= yield %>
Surf on over to yourserver/yourapp/mobile/ And voila! You have a lite version of your site perfect for viewing on a smartphone or PDA. As a bonus, when you start using a mobile page, your preference will “stick” and follow you, thanks to Rail’s routing.
