Jika post.published?
.post
/ Post stuff
Jika tidak
.post.gray
/ Post stuff
Saya sudah menerapkan ini dengan helper helper dan sepertinya jelek.
= content_tag :div, :class => "post" + (" gray" unless post.published?).to_s do
/ Post stuff
Varian kedua:
= content_tag :div, :class => "post" + (post.published? ? "" : " gray") do
/ Post stuff
Apakah ada cara yang lebih sederhana dan spesifik-haml?
UPD. Khusus Haml, tetapi masih tidak sederhana:
%div{:class => "post" + (" gray" unless post.published?).to_s}
/ Post stuff
{ class:[ (:class1 if cond1), (:class2 if cond2) ] }
sumber
.compact.join(" ")
. Anda dapat melakukannya:class => ["post active", ("gray" unless post.published?)]
Sungguh hal terbaik adalah memasukkannya ke dalam pembantu.
sumber
nil
dan atribut tidak akan ditetapkan, alih-alih pengaturanclass=""
HAML memiliki cara yang bagus untuk menangani hal ini:
Cara ini berfungsi adalah bahwa kondisional akan dievaluasi dan jika benar, string akan dimasukkan dalam kelas, jika tidak maka tidak akan dimasukkan.
sumber
Sintaks Ruby yang diperbarui:
sumber