Um tipo de mímica móvel pode voltar para "html" no Rails?
Estou usando esse código (retirado deaqui) no ApplicationController para detectar solicitações do iPhone, iPod Touch e 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
Isso me permite ter modelos como show.html.erb, show.mobile.erb e show.tablet.erb, o que é ótimo, mas há um problema: parece que devo definir todos os modelos para cada tipo de mímica. Por exemplo, solicitar a ação "show" de um iPhone sem definir show.mobile.erb gerará um erro mesmo que show.html.erb esteja definido. Se um modelo para celular ou tablet estiver ausente, eu gostaria de simplesmente recorrer ao modelo html. Não parece muito buscado, pois "mobile" é definido como um alias para "text / html" no mime_types.rb.
Então, algumas perguntas:
Estou fazendo isso errado? Ou há uma maneira melhor de fazer isto?Caso contrário, posso fazer com que os tipos de mímica para celular e tablet utilizem html se um arquivo para celular ou tablet não estiver presente?Se isso importa, estou usando o Rails 3.0.1. Agradecemos antecipadamente por quaisquer ponteiros.
EDITAR: Algo que esqueci de mencionar: acabarei mudando para subdomínios separados (como você pode ver comentado no meu exemplo), para que o carregamento do modelo realmente precise acontecer automaticamente, independentemente de qualbefore_filter
tem corrido.