рендеринг различных файлов для мобильных и настольных ПК - PullRequest
0 голосов
/ 11 декабря 2010

Я пишу код в маленьком веб-приложении, используя http://padrinorb.org (haml + lesscss) как для мобильных пользователей (android / iPhone / iPad), так и для пользователей настольных компьютеров, и поэтому я хочу отображать немного другие html /css для разных устройств.

Для определения различных клиентов я использую rack-mobile-Detection, который до сих пор прекрасно работал.

Чтобы макет стал макетом / application.mobile, я использую этипомощники / обертки для render

def preferred_extension 
  if request.xhr?
    "js"
  elsif env["X_MOBILE_DEVICE"]
    "mobile"
  else
    "html"
  end 
end 

def preferred_layout 
  if preferred_extension.eql? "html"
    "application"
  else
    "application.#{preferred_extension}"
  end 
end 

def render_preferred filename
  filename = "#{filename}.#{preferred_extension}"
  if request.xhr?
    layout_file = false
  else
    layout_file = "layouts/#{preferred_layout}".to_sym
  end
  render filename, :layout => layout_file
end 

Однако это не помогает мне при работе с частичками ... и мне кажется, что у кого-то должно быть лучшее решение для этого, чем просто обертывание рендера и частичное впомощник.

Я хочу, чтобы не посыпать мои контроллеры и представления странным кодом, просто чтобы отобразить правильный фрагмент / файл с правильной компоновкой.

Я бы хотел, чтобы обнаружение рендера нашловыяснить, какой файл использовать, и вернуться к filename.haml, если имя файла отсутствует. # {предпочитаемое_экстензия} .haml.

В rails есть такая вещь типа mime, которую я использовал в предыдущемпроект, но я не нашел ничего похожего на падрино (синатра)

1 Ответ

0 голосов
/ 20 декабря 2010

Я решил это, установив @_content_type равным предпочитаемому расширению в блоке before внутри каждого приложения / контроллеров /

...