Я пишу Sinatra приложение, которое должно отображать различные макеты в зависимости от того, использует ли пользователь iPhone или обычный браузер. Я могу определить тип браузера, используя Rack-Mobile-Detect , но я не уверен, что лучше сказать Синатре, какой макет использовать.
Кроме того, у меня есть ощущение, что то, как я выберу это, может также нарушить кеширование страниц. Это правда?
Пример кода:
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