0

問題: Enlive スニペットがファンキーな HTML を作成する

問題のビジュアル リファレンス: http://i.imgur.com/FIOzgZv.png

問題の奇妙な HTML については、コード スニペットの下部を参照してください

(ns notebook.handler
  (:require [compojure.core :refer :all]
            [compojure.handler :as handler]
            [compojure.route :as route]
            [net.cgrand.enlive-html :as html]))

(html/defsnippet nav "templates/nav.html" [:*]
      [])

(html/deftemplate home-page "templates/base.html"
  []
   [:body] (html/prepend (nav)))

(defroutes app-routes
  (GET "/" [] (home-page))
  (route/resources "/")
  (route/not-found "Not Found"))

(def app
   (handler/site app-routes))

base.html の内容:

<html>
  <head>
    <link rel=stylesheet href="css/base.css">
  </head>
  <body>
  </body>
</html>

nav.html の内容:

<nav>
  <ul>
    <li>FlatNotes</li>
  </ul>
</nav>

localhost:3000 にアクセスしたときの HTML:

<html>
  <head>
    <link href="css/base.css" rel="stylesheet" />
  </head>
  <body><nav>
  <ul>
    <li>FlatNotes</li>
  </ul>

</nav><ul>
    <li>FlatNotes</li>
  </ul><li>FlatNotes</li>
  </body>

</html>

(reduce str (html/emit* (nav)))defsnippet問題が前に発生することを意味する奇妙な HTML を示していますdeftemplate

"<nav>\n  <ul>\n\t<li>FlatNotes</li>\n  </ul>\n\n</nav><ul>\n\t<li>FlatNotes</li>\n  </ul><li>FlatNotes</li>"

多分私は何をするかについて間違っているか[:*]、根本的な誤解があるか、または私が気付いていない落とし穴があります. 私はすでにコードをできる限り最小限に減らしました。

4

1 に答える 1