Оптимус Пьян: Очень даже очевидно - генерирует необходимый урл.
Никто не запрещает вам перенести этот код в другой модуль (контроллер/модель) и передавать во вьюху уже готовы урл. Но зачем? url() - это просто хелпер, построитель ссылок. Хелперы уместно использовать в шаблонах.
account-1: Строку юзерагента браузер пересылает серверу с каждым запросом, в http заголовках. Сервер (не важно какой язык там крутится) читает эту строку, анализирует, узнает браузер, и решает какой css отдать.
Библиотеки готовые есть https://www.yandex.ru/yandsearch?text=mobile%20detector
Были даже сервисы вроде, предоставляющие API для анализа юзерагента.
Александр Лозовский: Потому что просто невозможно математически сделать радиус больше половины размера элемента. Пока размер не превышает 2000px так и будет отрисовываться.
bbeight: ну углубляясь в теорию и объясняя "по детски": колонки в бутстрапе имеют стиль float: left
В примере https://jsfiddle.net/f8rtwxe9/1/ первая колонка по высоте больше второй, поэтому когда третья уплывает влево, она "спотыкается" об эту длинную колонку. Что бы не спотыкалась, нужно задать ей стиль clear:left что дает ей указание опустится ниже всех float:left блоков
Мы берем селектор nth-child(2n+1) и задаем им этот стиль. Запись означает "каждый второй блок, начиная отсчет с первого". т.е. третий, пятый, и т.д.
Используем медиазапросы, чтобы очистка работала только для md колонок.