1

以下は私のアプリです -

(ns mfaiz.routes
  (:use [net.cgrand.moustache :only [app]]
        [net.cgrand.enlive-html :only [deftemplate content]]
        [ring.util.response :only [response]]))

(deftemplate reg "mfaiz/templates/reg.html" [])

(def my-app (app
             ["hi"] "Hello World!"
             ["reg"] (-> ((-> "reg" symbol resolve)) response constantly) 
             [&] "Nothing was found"))

このルートでエラーが発生しました -

["reg"] (-> ((-> "reg" symbol resolve)) response constantly) 

上記のルートを直接評価すると、正しく動作し、html ファイルが返されます -

((-> "reg" symbol resolve)) 

テンプレート関数を直接呼び出すようにルートも変更すると、それも機能します-

["reg"] (-> (reg) response constantly)

何がうまくいかないのですか?

4

1 に答える 1

1

問題は、リングの下で​​実行されたときに、完全に修飾されていないために「reg」が解決されていないという事実にあるようです。リングサーバーが起動するネームスペースによって異なります。したがって、完全修飾名を使用すると機能します。

(-> "mfaiz.routes/reg" symbol resolve)

resolve ドキュメントを確認してください。現在の名前空間、つまりでシンボルを解決しようとします*ns*

于 2012-09-07T09:13:15.017 に答える