尝试根据 :server-name 在请求中返回的内容加载特定模板:
(ns rosay.views.common
(:use noir.core)
(:require [noir.request :as req]
[clojure.string :as string]
[net.cgrand.enlive-html :as html]))
(defn get-server-name
"Pulls servername for template definition"
[]
(or (:server-name (req/ring-request)) "localhost"))
(defn get-template
"Grabs template name for current server"
[tmpl]
(string/join "" (concat [(get-server-name) tmpl])))
(html/deftemplate base (get-template "/base.html")
[]
[:p] (html/content (get-template "/base.html")))
它适用于返回 /home/usr/rosay/resources/localhost/base.html 的 localhost,但是当我针对不同的主机进行测试时说“hostname2”,我看到 get-template 在哪里查看 /home/usr/rosay/resources /hostname2/base.html 但当它在浏览器中呈现时,它总是指向 ../resources/localhost/base.html。
是否有宏或不同的方式来处理这个用例?