2016-03-25 7 views
2

Ich baue von der lein new compojure-app Vorlage. Ich habe eine Route zu /, die gut funktioniert, sowie eine Route zu /foo/, die funktioniert. Zwischen den beiden Seiten ändert sich nur der Körper, also würde ich gerne so viel wie möglich in eine gemeinsame Ansichtsfunktion einbinden (ich verwende den Standard common in views/layout.clj). Allerdings, wenn Ressourcen nach relativen Pfad, wie css/main.css, meine Route zu / funktioniert gut, aber die Route zu /foo/ sucht nach /foo/css/main.css statt in das Stammverzeichnis suchen. Wie sortiere ich statische Ressourcen mit relativen Pfaden zu beliebigen Routen?Serving statische Ressourcen mit relativen Pfaden in Clojure zu verschiedenen Routen

Antwort

2

Sie müssen wrap-base-url Middleware zusammen mit include-css verwenden. Die wrap-base-url wird *base-url* dynamische var, die zum Erstellen von URLs für Ressourcen mit include-css, include-js oder mit to-url direkt verwendet werden.

Wenn Sie Ihre App als War in einem Servlet-Container bereitstellen, erkennt wrap-base-url Ihren App-Stammkontext automatisch (z. B. /my-app/). Andernfalls müssen Sie den Stammpfad manuell als zweites Argument angeben.

+0

Ein wenig mehr Klarheit: Der an 'include-css' übergebene String muss mit einem '/' beginnen. Mit anderen Worten, tu das nicht: '(include-css" css/main.css ")'. Tun Sie dies stattdessen: '(include-css" /css/main.css ")'. Subtil, aber es ist der Unterschied zwischen arbeiten und nicht. –

Verwandte Themen