Использование альтернативного макета Rails, но того же представления, на мобильных устройствах - PullRequest
8 голосов
/ 13 августа 2011

Я использовал ту же тактику в Mobile Devices railscast , чтобы предоставить альтернативный макет моего сайта в мобильном браузере.

При обнаружении мобильного браузера для request.format устанавливается значение: mobile, которое я определил как mime-тип. Я создал новый макет для мобильных устройств. Если я предоставляю мобильное представление (например, show.mobile.haml), мобильное представление и макет используются на мобильных устройствах, и все отлично работает.

Проблема в том, что я не хочу создавать совершенно новые представления, я просто хочу изменить макет. Если я не создаю вид с соответствующим именем, мобильный макет никогда не используется. Таким образом, я могу изменить только оба или ни одного на мобильных устройствах.

Что мне здесь не хватает? Как я могу получить рельсы для замены просто макета, когда у меня есть мобильный пользователь?

Ответы [ 2 ]

18 голосов
/ 13 августа 2011

Предположим, что вы добавили метод mobile_device? из railscasts, а затем просто добавьте следующее в application_controller.rb:

  layout :which_layout
  def which_layout
    mobile_device? ? 'mobile' : 'application'
  end

Обязательно создайте файл mobile.html.erb в app / views / layouts

Поскольку вы хотите визуализировать то же представление, не беспокойтесь о настройке request.format.

4 голосов
/ 13 августа 2011

Я всегда обнаруживал, что переключение запрошенного формата с HTML на мобильный не соответствует соглашению.Он полностью использует инструмент, поэтому неудивительно, что вы сталкиваетесь с проблемами, пытаясь остаться СУХИМЫМИ.

Вместо того, чтобы переключать запрошенный формат, просто проверьте, является ли данный запрос от мобильного устройства, и установите макет на основе этого.Бинг, взрыв, бум - готово.Не нужно возиться с чем-то не связанным, потому что это сделал кто-то другой, и вы можете вернуться к работе.

Я бы опубликовал код, но tybro0103 просто побил меня до отказа с ссылкой для загрузки.О-о-о-о-о!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...