首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Clojure enlive:函数html-内容不能使用参数操作函数(?)

Clojure enlive:函数html-内容不能使用参数操作函数(?)
EN

Stack Overflow用户
提问于 2014-11-13 04:19:20
回答 1查看 78关注 0票数 0

所以我用deftemplate制作了一个简单的html模板,

代码语言:javascript
复制
(html/deftemplate header "selmer/header.html"
  [])    

(html/deftemplate footer "selmer/footer.html"
  [])

(html/deftemplate blogp "selmer/blogpage.html"
  [id]
  [:bjudul] (html/content (:title (db/finddata id)))
  [:bisi] (html/content (:content (db/finddata id))))

(注意:db/finddata id是一个函数,它以数字作为数据Id,并通过特定的数据id从数据库返回数据映射,例如,如果我键入

代码语言:javascript
复制
(db/finddata 1)   

它会产生这个

代码语言:javascript
复制
{:title "Wowtitle", :content "wowcontent", :id 1}

它是我的数据库中的数据,id为1)

然后

代码语言:javascript
复制
(html/deftemplate layout "selmer/layout.html"
  [content contenttitle]
  [:title] (html/content contenttitle)
  [:header] (html/html-content (apply str (header)))
  [:pagecontents] (html/html-content (apply str (content)))
  [:footer] (html/html-content (apply str (footer))))

(defn createpage [pcontents tcontent]
  (apply str (layout pcontents tcontent)))

但是当我在repl中输入这个

代码语言:javascript
复制
(createpage (blogp id) "Blog")

它会产生这个错误。

代码语言:javascript
复制
ClassCastException clojure.lang.PersistentVector$ChunkedSeq cannot be cast to clojure.lang.IFn  zenblog.pageandctrl.pagelayout/fn--14851/fn--14853/fn--14854 (form-init2686073120612682758.clj:1)

如果我更改blogp代码,它似乎与另一个缺陷模板工作得很好。

代码语言:javascript
复制
(html/deftemplate blogp "selmer/blogpage.html"
  []
  [:bjudul] (html/content (:Judul (db/findById **1**)))
  [:bisi] (html/content (:Isi (db/findById **1**))))

然后我输入了这个

代码语言:javascript
复制
(createpage blogp "Blog")

效果很好。知道为什么吗?

我是新来的克洛尔,我也是新来的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-13 11:37:20

您的layout模板期望content参数是一个函数,而当您执行(blogp id)时,实际上是传递函数的结果,而不是函数本身。你能做的就是这样使用它:

代码语言:javascript
复制
(createpage (partial blogp id) "Blog")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26901275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档