ここでClojure初心者!NoirプロジェクトのHiccupコードにフラッシュメッセージのサポートを追加しました。
私がやろうとしているのは、それぞれの特定のメッセージ文字列が設定されているかどうかを確認することです。メッセージがない場合は、そのメッセージを含む特定のフラッシュ要素を表示したくありません。
(defpartial success-flash [msg]
[:div.alert.notice.alert-success
[:a.close {:data-dismiss "alert"} "x"]
[:div#flash_notice msg]])
(defpartial error-flash [msg]
[:div.alert.notice.alert-error
[:a.close {:data-dismiss "alert"} "x"]
[:div#flash_notice msg]])
[..]
(defpartial layout [& content]
(html5
[:head
[...]
[:body
(list
[...]
[:div.container
(let [error-msg (session/flash-get :error-message)
error-div (if (nil? error-msg) () (error-flash error-msg))
success-msg (session/flash-get :success-message)
success-div (if (nil? success-msg) () (success-flash success-msg))]
warning-msg (session/flash-get :warning-message)
warning-div (if (nil? warning-msg) () (warning-flash warning-msg))]
(list error-div success-div warning-div content))])]))
免責事項:一度に複数の特定のフラッシュをオンにする必要がある状況になる可能性はほとんどないことに完全に同意しますが、これを実装するためのより優れた、より機能的な方法を見つけようと私を甘やかしてください。
同様の状況を処理するためのパターンがそこにあると私は確信しています。基本的に、私はいくつかの式の値をチェックし、それらの値を使ってたくさんのことを行い、その結果に基づいて行動します。次第に巨大な(条件)でこれをやってのけることができますが、私の解決策は少なくともいくらかきれいです。
チップ?