Самое элегантное решение для этого, которое я видел, - это делать две вещи: распознавать мобильных пользователей на основе user-agent в запросе и использовать пользовательский тип Mime Rails для ответа, позволяя настраивать шаблоны HTML для мобильных пользователей.
Определите пользовательский «мобильный» тип MIME Rails в config/initializers/mime_types.rb
, это просто HTML:
Mime::Type.register_alias "text/html", :mobile
Добавьте помощник / фильтр для ответа мобильным пользователям:
def mobile_user_agent?
@mobile_user_agent ||= ( request.env["HTTP_USER_AGENT"] && request.env["HTTP_USER_AGENT"][/(Mobile\/.+Safari)/] )
end
then ..
before_filter :handle_mobile
def handle_mobile
request.format = :mobile if mobile_user_agent?
end
Создание собственного мобильного шаблона:
app/views/users/show.html.erb => app/views/users/show.mobile.erb
Отправка мобильного или обычного в контроллеры:
respond_to do |format|
format.html { } # Regular stuff
format.mobile { } # other stuff
end