我正在開發使用Clojure的Web應用程序,目前正與Ring,Moustache,Sandbar和Hiccup。我有一個名爲作業資源,以及路由,以顯示在多步的形式的特定步驟,用於這樣定義的特定作業(其他途徑爲簡單起見省略):我將如何實現類似於Clojure及其Web框架的Rails'url_for的功能?
(def web-app
(moustache/app
;; matches things like "/job/32/foo/bar"
:get [["job" id & step]
(fn [req] (web.controllers.job/show-job id step))]))
在視圖我的控制器呈現時,鏈接指向同一作業中的其他步驟。目前,這些網址是用手構建的,例如, (str "/job/" id step)
。我不喜歡硬編碼的"/job/"
url部分,因爲它重複了我在鬍子路由中定義的內容;如果我改變路線,我需要改變我的控制器,這是一個比我更關心的緊密耦合。
我知道Rails的路由系統的方法來生成參數的URL,並且我希望我有類似的功能,也就是我希望我有一個功能url-for
,我可以這樣調用:
(url-for :job 32 "foo" "bar")
; => "/job/32/foo/bar"
是有一個Clojure網絡框架,使這很容易?如果不是的話,你對如何實施這個想法有什麼想法?
不錯的一個!我曾多次看過Noir,但到目前爲止,我真的很喜歡更簡約的Mustache方法。我今天會做一個小實驗,看看Noir是否適合我的需求。 – Gert 2012-03-13 20:43:49