2 Stimmen

Warum gibt mir Ring in dieser Antwort einen Fehler?

Unten ist meine Anwendung -

(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"))

Ich stoße auf einen Fehler bei dieser Route -

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

Wenn ich die obige Route direkt auswerte, funktioniert sie einwandfrei und liefert die html-Datei -

((-> "reg" symbol resolve)) 

Wenn ich die Route auch so ändere, dass sie die Vorlagenfunktion direkt aufruft, funktioniert es auch.

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

Irgendwelche Ideen, was falsch läuft?

2voto

Ankur Punkte 32819

Das Problem scheint die Tatsache zu sein, dass bei der Ausführung unter Ring das "reg" nicht aufgelöst wird, weil es nicht voll qualifiziert ist. Es hängt davon ab, in welchem Namespace der Ring-Server gestartet wird. Die Verwendung des voll qualifizierten Namens funktioniert also:

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

Bitte prüfen resolve Dokumentation . Es wird versucht, das Symbol im aktuellen Namespace aufzulösen, d.h. in *ns*

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X