私はClojureを使用して、現在Ring、Mustache、Sandbar、Hiccupを使用してWebアプリケーションを開発しています。jobという名前のリソースと、このように定義された特定のジョブのマルチステップ形式で特定のステップを表示するルートがあります(簡単にするために他のルートは省略されています)。
(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))]))
コントローラがレンダリングするビューには、同じジョブ内の他のステップへのリンクがあります。現時点では、これらのURLは手動で作成されてい(str "/job/" id step)
ます。"/job/"
口ひげのルートで定義したものを繰り返すので、URLのハードコードされた部分は好きではありません。ルートを変更する場合は、コントローラーを変更する必要があります。これは、私が気にかけているよりも緊密な結合です。
RailsのルーティングシステムにはパラメータからURLを生成するメソッドがあることを知っています。同様の機能があればいいのにと思います。つまり、次のurl-for
ように呼び出すことができる関数があればいいのにと思います。
(url-for :job 32 "foo" "bar")
; => "/job/32/foo/bar"
これを簡単にするClojureWebフレームワークはありますか?そうでない場合、これをどのように実装できるかについてどう思いますか?