Я использую clojure и hiccup (с нуаром), и у меня есть этот код:
(defn dataframe [id]
(db/db-to-data id))
(defpartial drop-downs [nms]
(for [nm (keys nms)] (drop-down nm (get nms nm))[:br])
(submit-button "Refresh")
)
(defpage "/dataset/table/:id" {:keys [id]}
(common/layout
(form-to [:post (format "/dataset/table/%s" id)]
(drop-downs {"alessio" [:col0], "test" [:col1]})
)
(html-table (dataframe id))))
Моя проблема с:
(for [nm (keys nms)] (drop-down nm (get nms nm))[:br])
Я хочу иметь множественный выбор в моей форме. Строка выше делает это, но по какой-то причине не учитывает [: br], поэтому не ломает строки. Однако, если я сделаю это:
(form-to [:post (format "/dataset/table/%s" id)]
(drop-down "Test1" "1")[:br]
(drop-down "Test2" "2")[:br]
)
Тег [: br] работает. Я полагаю, что это связано с тем, как работает макрос (for), но я не мог понять причину и как это исправить.
EDIT
Как и советовали, я отказался от использования for. Финальный результат ниже (который является ответом Joost с небольшим модом):
(mapcat #(vector (drop-down % (nms %)) [:br]) (keys nms))