Взгляните на Rails Mobile
Я разработал этот плагин некоторое время назад. Идея этого плагина заключается в том, что вы можете перенаправить на различные контроллеры или представления в зависимости от возможностей вашего мобильного устройства через файл конфигурации вашего маршрутизатора.
В конце routing.rb добавить эти строки:
MobileDispatch::Categories.add do
def mobile_classifier(device)
"_mobile"
end
end
Эти строки определяют новую подстроку для всех мобильных устройств, которая будет храниться в переменной $ для каждого запроса в файле rouging.rb.
Таким образом, вы можете играть с вашими правилами маршрутизации. Например, эта строка в routing.rb:
match '/ photo /: id',: to => "photo # index $",: classifier =>: mobile_classifier
для обычного пользователя будет интерпретироваться как:
match '/ photo /: id',: to => "photo # index",: classifier =>: mobile_classifier
для мобильного пользователя как:
match '/ photo /: id',: to => "photo # index_mobile",: classifier =>: mobile_classifier
Сила здесь в методе mobile_classifier (устройство), где вы можете вернуть различную классификацию на основе объекта устройства.
Допустим, мы изменили метод для возврата «_iphone» для всех устройств iphone и «_android» для всех мобильных телефонов Android, тогда указанная выше линия маршрутизации будет интерпретироваться как:
match '/ photo /: id',: to => "photo # index_iphone",: classifier =>: mobile_classifier
match '/ photo /: id',: to => "photo # index_android",: classifier =>: mobile_classifier
Если вы добавите $ в конец просмотра каждого маршрута (аналогично тому, что мы сделали здесь), вы получите разные методы в вашем контроллере для каждой категории устройств и разные имена представлений для каждого метода (index_iphone.htm). erb and index_android.ht.erb) Таким образом, у вас есть отдельные представления / слои для каждой категории устройств, которую вы определили в методе mobile_classifier.