Код сбоя без ответа (do (html5 на каждом уровне
Я не могу бегать изнутри [:tr]
без (do (html5 ..))
когда я использую вложенный оператор le t, имеющий для цикла.
(defpartial column-settings-layout [& content]
(html5
[:head
[:title "my-noir-proj"]
(include-css "assets/css/bootstrap.css")
]
[:body
[:div
[:div
[:image {:src "assets/img/ceva.gif" :alt "ceva-logo"}]
(toolbar)
]
[:div {:style "overflow: auto; overflow-x: hidden"}
content]
[:form {:id "col_settings_form" :name "col_settings_form" :method="post" :enctype="multipart/form-data"}
[:input {:type "button" :value "Save" :onclick "ajaxWithSerialize('save_cols_response_div','/save_cols_settings',$(col_settings_form).serialize());"}]
[:table {:class "table-striped" :border "1"}
[:tr [:td {:id "processing_status" } ][:td {:id "save_cols_response_div" :colspan 6} ]]
[:tr [:td ][:td {:colspan "3"} "SP" ] [:td {:colspan "3"} "WP"]]
(let [wp_settings (session/get :wp_settings)
sp_settings (session/get :sp_settings)]
(do (html5 [:tr [:td {:colspan "7"} "jhyghjghj"]]))
(for [col (:all_cols (session/get :setting_doc))]
(let
[
dest_station (keyword (session/get :dest_station))
;col_nm (:col_nm (nth col 1))
field_nm (nth col 0)
sp_col_nm (:col_nm (field_nm (dest_station sp_settings)))
wp_col_nm (:col_nm (field_nm (dest_station wp_settings)))
sp_editable (:editable (field_nm (dest_station sp_settings)))
wp_editable (:editable (field_nm (dest_station wp_settings)))
]
(do (html5 [:tr[:td "sfsdfgfds"]]
[:tr
[:th { :align "right" :class "input-small" } field_nm ]
[:td {:title sp_editable }[:input {:type "text" :class "input-large" :name (str "page_sp[" dest_station "][" field_nm "][col_nm]") :value sp_col_nm } ] ]
[:td [:input {:type "checkbox" :name (str "page_sp[" dest_station "][" field_nm "][col_nm]") :value field_nm}]]
[:td [:input {:type "checkbox" :name (str "page_sp[" dest_station "][" field_nm "][editable]") :value field_nm}]]
[:td {:title wp_editable }[:input {:type "text" :class "input-large" :name (str "page_wp[" dest_station "][" field_nm "][col_nm]") :value wp_col_nm} ] ]
[:td [:input {:type "checkbox" :name (str "page_wp[" dest_station "][" field_nm "][col_nm]") :value field_nm}]]
[:td [:input {:type "checkbox" :name (str "page_wp[" dest_station "][" field_nm "][editable]") :value field_nm}]]
]))
)
)
)
]
]
(footer)
;my includes of js and css
]]))
2 ответа
Ваша проблема, вероятно, в том, что вы пытаетесь сделать что-то вроде
[:tr (for ... [:td .])]
что приводит к неверному формату икоты
[:tr [[:td ..] [:td ..] ..]] ; note the vector of vectors inside the :tr
где икота ожидает
[:tr [:td ..] [:td ..] ..] ; :td vectors are direct elements of :tr
Чтобы получить ожидаемое форматирование, вам нужно что-то вроде
(into [:tr] (for ... [:td .]))
обновление: причина, по которой ваша конструкция (html..) также устраняет эту проблему, заключается в том, что она превращает всю последовательность отформатированных тегов икоты в одну строку HTML. И вы можете бросить do
- он не делает ничего полезного.
(html5
[:tr ...]
(for ...))
do
для побочных эффектов, и сбой является чисто функциональным, без побочных эффектов. Вам нужно вернуть вектор с большим количеством материала, а не каким-то образом вернуть один вектор, а затем другой.