2013-02-13 19 views
3

我有一個照片鏈接列表,並且想用clojure和noir生成img標籤。使用Noir從列表生成img標籤

在這裏,我得到的鏈接:

(def photos 
(->> (get-in result ["photoset" "photo"]) (map #(str "http://farm"(get % "farm") 
".staticflickr.com/"(get % "server")"/"(get % "id")"_"(get % "secret")"_b.jpg")))) 

結果:

(http://farm9.staticflickr.com/8087/8455893107_1a3236df06_b.jpg http://farm9.staticflickr.com/8235/8469482476_4c1bf59214_b.jpg) 

然後我嘗試生成從該列表中的img標籤:

(defpage "/" [] 
(mylayout/layout 
(doseq [e photos] (prn e)) 
)) 

(電話(defpartial layout [& content] ...)

我試圖讓下面的輸出中的黑色基礎的網站的各個環節:

[:img {:src "url"}] 

我嘗試這種之一,但沒有成功:

(doseq [e photos] ([:img {:src e}])) 

我怎樣才能通過鏈接到佈局,以便它生成img標籤?

謝謝!

回答

4

這些任選其一:

(map #(vector :img {:src %}) photos) 

(for [url photos] 
    [:img {:src url}]) 

編輯:如前所述Chuckdoseq是副作用。您想「收集」結果並將其發送到模板。要做到這一點,你需要使用列表理解,比如for或者僅僅是map

我討厭下雨您的遊行,但只是讓你知道,noir has been deprecated

+1

換句話說,怪的錯誤是1)使用'doseq',而不是'for'('doseq'是當你不是爲了關心返回值),以及2)將矢量放在矢量上(你不是想要調用它)。 – Chuck 2013-02-13 20:47:22