Я пишу код в маленьком веб-приложении, используя 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, которую я использовал в предыдущемпроект, но я не нашел ничего похожего на падрино (синатра)