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: 307
        
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