Может ли мобильный 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 побежал.

Ответы на вопрос(15)

Ваш ответ на вопрос