Может ли мобильный mime-тип вернуться к «html» в Rails?
Я использую этот код (взят изВот) в ApplicationController для обнаружения запросов iPhone, iPod Touch и iPad:
before_filter :detect_mobile_request, :detect_tablet_request
protected
def detect_mobile_request
request.format = :mobile if mobile_request?
end
def mobile_request?
#request.subdomains.first == 'm'
request.user_agent =~ /iPhone/ || request.user_agent =~ /iPod/
end
def detect_tablet_request
request.format = :tablet if tablet_request?
end
def tablet_request?
#request.subdomains.first == 't'
request.user_agent =~ /iPad/
end
Это позволяет мне иметь такие шаблоны, как show.html.erb, show.mobile.erb и show.tablet.erb, и это здорово, но есть проблема: кажется, я должен определить каждый шаблон для каждого типа пантомимы. Например, запрос действия «show» у iPhone без определения show.mobile.erb вызовет ошибку, даже если определен show.html.erb. Если шаблон для мобильного телефона или планшета отсутствует, я хотел бы просто вернуться к HTML. Кажется, это не слишком далеко, поскольку «mobile» определяется как псевдоним «text / html» в mime_types.rb.
Итак, несколько вопросов:
Я делаю это неправильно? Или есть лучший способ сделать это?Если нет, могу ли я использовать типы mime для мобильных устройств и планшетов для использования html, если файл для мобильного телефона или планшета отсутствует?Если это имеет значение, я использую Rails 3.0.1. Заранее спасибо за любые указатели.
РЕДАКТИРОВАТЬ: Кое-что я забыл упомянуть: в конечном итоге я перейду к отдельным поддоменам (как вы можете видеть закомментировано в моем примере), поэтому загрузка шаблона действительно должна происходить автоматически независимо от того, какойbefore_filter
побежал.