In Sinatra, best way to serve iPhone layout vs. normal layout?

Posted by Doug on Stack Overflow See other posts from Stack Overflow or by Doug
Published on 2010-06-04T22:10:38Z Indexed on 2010/06/05 19:52 UTC
Read the original article Hit count: 270

I'm writing a Sinatra app which needs to render different layouts based on whether the user is using an iPhone or a regular browser. I can detect the browser type using Rack-Mobile-Detect but I'm not sure of the best way to tell Sinatra which layout to use.

Also, I have a feeling that how I choose to do this may also break page caching. Is that true?

Example code:

require 'sinatra/base'
require 'haml'
require 'rack/mobile-detect'

class Orca < Sinatra::Base

  use Rack::MobileDetect

  helpers do
    def choose_layout
      if request.env['X_MOBILE_DEVICE'] == :iPhone
        # use iPhone layout
      else
        # use normal layout
      end
    end
  end

  before do
    # should I use a before filter?
    choose_layout()  
  end

  get '/' do
    haml :home # with proper layout
  end

end #Class Orca

© Stack Overflow or respective owner

Related posts about ruby

Related posts about layout