Миддлмен: Как я могу отобразить другой фрагмент для мобильного устройства?

Я создаю целевую страницу с помощью Middleman прямо сейчас (я не знаком с бэкэнд-вещами). Я разбиваю каждый раздел на разные части (например):

= partial "partials/_section-1"
= partial "partials/_section-2"
= partial "partials/_section-3"

Я пытался отобразить другую часть, если пользователь просматривает веб-сайт через мобильный телефон:

= partial "partials/_section-1"
- if mobile_device?
  = partial "partials/_section-2-mobile"
- else
  = partial "partials/_section-2"
= partial "partials/_section-3"

Есть ли способ добиться этого? Вероятно, что-то похожее на хелпер Ruby:

def mobile_device?
    if session[:mobile_param]
      session[:mobile_param] == "1"
    else
      request.user_agent =~ /Mobile|webOS/
    end
end
helper_method :mobile_device?

Спасибо!


person Wawan    schedule 25.01.2016    source источник


Ответы (2)


Вы можете просто использовать следующую функцию:

 def mobile_device?
   if session[:mobile_param]
     session[:mobile_param] == "1"
   else
     request.user_agent =~ /Mobile|webOS/
   end
end

Кроме того, Railscast с дополнительной информацией: http://railscasts.com/episodes/199-mobile-devices

Для лучшего регулярного выражения используйте следующий сайт: http://detectmobilebrowsers.com/


Поскольку у вас уже есть такой же сценарий, где ваш вопрос?

person Philipp Meissner    schedule 25.01.2016
comment
Я сделал, но это не работает на Миддлмане. Я получаю эту ошибку каждый раз: undefined local variable or method 'session' - person Wawan; 26.01.2016

Миддлман генерирует статические страницы, поэтому совершенно не участвует, когда клиент заходит на сайт. Так что Миддлман никак не может этого сделать.

Лучше всего использовать css или javascript.

person TommySundstrom    schedule 10.05.2016
comment
Да. Правда что. Сначала я был слишком амбициозен с посредником :P - person Wawan; 19.05.2016