2016-03-25 5 views
2

私はlein new compojure-appテンプレートを構築しています。私は/への経路があり、それはうまく働くだけでなく、/foo/への経路もあります。 2つのページの間ではボディのみが変化するので、共通のビュー機能(私はデフォルトのcommonviews/layout.cljに使用しています)にできる限り固執したいと思います。しかし、css/main.cssのような相対パスでリソースを提供する場合、私のルートは/になりますが、/foo/へのルートはルートディレクトリではなく/foo/css/main.cssを探しています。静的リソースに任意のルートへの相対パスをどのように提供すればよいですか?異なるルートへのClojureでの相対パスによる静的リソースの提供

答えて

2

wrap-base-urlミドルウェアとinclude-cssを併用する必要があります。 wrap-base-urlは、include-cssinclude-js、またはto-urlを直接使用して含まれるリソースのURLを構築するために使用される*base-url*動的varを設定します。

サーブレットコンテナに戦争としてアプリをデプロイする場合は、wrap-base-urlがアプリルートコンテキスト(/my-app/など)を自動的に検出します。それ以外の場合は、2番目の引数として手動でルートパスを指定する必要があります。

+0

もう少し明快です: 'include-css'に渡される文字列は、'/'で始まらなければなりません。言い換えれば、これをしないでください: '(include-css" css/main.css ")'。代わりに、 '(include-css" /css/main.css ")'を実行します。微妙ですが、それは働くかどうかの違いです。 –

関連する問題