2016-03-25 10 views
2

Я строил шаблон lein new compojure-app. У меня есть маршрут до /, который отлично работает, а также маршрут до /foo/, который работает. Между двумя страницами изменяется только тело, поэтому я хотел бы придерживаться так, как я могу, в общую функцию просмотра (я использую значение по умолчанию common в views/layout.clj). Однако при обслуживании ресурсов по относительному пути, например css/main.css, мой маршрут до / работает нормально, но маршрут до /foo/ ищет /foo/css/main.css вместо поиска в корневом каталоге. Как обслуживать статические ресурсы с относительными путями к произвольным маршрутам?Обслуживание статических ресурсов с относительными путями в Clojure на разные маршруты

ответ

2

Вам необходимо использовать промежуточное программное обеспечение wrap-base-url вместе с include-css. wrap-base-url установит *base-url* динамический var, который будет использоваться для создания URL-адресов для ресурсов, включенных в include-css, include-js или напрямую с помощью to-url.

Если вы развертываете приложение как войну в контейнере сервлетов, wrap-base-url автоматически определит корневой контекст вашего приложения (например, /my-app/). В противном случае вам необходимо указать корневой путь вручную в качестве второго аргумента.

+0

Немного больше ясности: Строка, передаваемая 'include-css', должна начинаться с'/'. Другими словами, не делайте этого: '(include-css" css/main.css ")'. Вместо этого сделайте следующее: '(include-css" /css/main.css ")'. Тонкий, но это разница между работой и нет. –