Этот маршрут Compojure GET с жестко заданным идентификатором...
;posts
(GET "/post:id" [id :as request]
;(str "the post id is... " id)
(def email (get-in request [:session :ze-auth-email]))
(vb/post-page-draw email 17592186045616))
Работает^
Однако с символическим идентификатором (в последней строке)...
;posts
(GET "/post:id" [id :as request]
;(str "the post id is... " id)
(def email (get-in request [:session :ze-auth-email]))
(vb/post-page-draw email id)
Где находится URL:
localhost:4000/post17592186045616 ;;i.e. the number from above
(изменить: нет двоеточия между словом post и идентификатором)
Возвращает огромную трассировку стека, в основном
java.lang.Exception
processing rule: (q__7967 ?title ?content ?tags ?eid),
message: processing clause: [?eid post/title ?title],
message: Cannot resolve key: 17592186045616
Итак, я смог изолировать его от компоновки деструктурирования, просто мне не нравится целое число, которое я передаю... как я могу заставить работать мой (vb/post-page-draw email id) с параметрами, переданными через URL?
id
возвращается в виде строки, которую вам нужно преобразовать в число (например, используяLong/parseString
), и вы не должны вкладыватьdef
, вместо этого используйтеlet
.def
является глобальным, а не локальным. - person cgrand   schedule 06.03.2015