Создание тегов img с помощью нуара из списка

У меня есть список ссылок на фотографии, и я хотел бы сгенерировать теги img с помощью clojure и noir.

Вот ссылки:

(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?

Спасибо!


person Nico    schedule 13.02.2013    source источник


Ответы (1)


Любой из них должен работать:

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

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

Изменить: как упоминал Чак, doseq предназначен для побочных эффектов. Вы хотите «собрать» результаты и отправить их в шаблон. Для этого вам нужно использовать понимание списка, например for или просто map над вашей коллекцией.

Ненавижу проливать дождь на ваш парад, но, чтобы вы знали, нуар больше не поддерживается

person Kyle    schedule 13.02.2013
comment
Другими словами, ошибки Блейма заключались в 1) использовании doseq вместо for (doseq для случаев, когда вы не заботитесь о возвращаемом значении) и 2) помещении скобок вокруг вектора (вы не пытаетесь его вызвать). - person Chuck; 14.02.2013