यदि हम्म में स्थिति सही है, तो कक्षा में जोड़ें


155

अगर post.published?

.post
  / Post stuff

अन्यथा

.post.gray
  / Post stuff

मैंने इसे रेल हेल्पर के साथ लागू किया है और यह बदसूरत लगता है।

= content_tag :div, :class => "post" + (" gray" unless post.published?).to_s do
  / Post stuff

दूसरा संस्करण:

= content_tag :div, :class => "post" + (post.published? ? "" : " gray") do
  / Post stuff

क्या अधिक सरल और हैल्म-विशिष्ट तरीका है?

युपीडी। Haml-specific, लेकिन अभी भी सरल नहीं है:

%div{:class => "post" + (" gray" unless post.published?).to_s}
  / Post stuff

जवाबों:


331
.post{:class => ("gray" unless post.published?)}

73
कई स्थितियों के लिए बस एक साइड नोट `{वर्ग: [('class1' जब तक कंडीशन 1), ('class2' if condition2)]}` .. आदि
मोहम्मद अबूझी

5
कई स्थितियों के लिए अधिक { class:[ (:class1 if cond1), (:class2 if cond2) ] }
रसीला

1
नोट: कोष्ठक आवश्यक हैं या आपको माणिक वाक्यविन्यास त्रुटि मिलेगी।
टॉपर फंगियो

21
- classes = ["post", ("gray" unless post.published?)]
= content_tag :div, class: classes do
  /Post stuff

def post_tag post, &block
  classes = ["post", ("gray" unless post.published?)]
  content_tag :div, class: classes, &block
end

= post_tag post
  /Post stuff

1
इतना संक्षिप्त नहीं है, लेकिन यदि सहायक में रखा जाए तो अन्य तरीकों से बेहतर दिखता है।
साइमन पेरेपेलिट्स

3
यह अच्छी तरह से काम करता है - मैंने देखा कि आपको इसकी आवश्यकता नहीं है .compact.join(" ")। आप बस कर सकते हैं:class => ["post active", ("gray" unless post.published?)]
स्टेनरसन

15

वास्तव में सबसे अच्छी बात यह है कि इसे एक सहायक के रूप में रखा जाए।

%div{ :class => published_class(post) }

#some_helper.rb

def published_class(post)
  "post #{post.published? ? '' : 'gray'}"
end

मैंने इसे अपनी सहायक फ़ाइल में डाल दिया है, लेकिन मेरा ऐप मुझे बताता है, कि कोई "पोस्ट" वैरिएबल नहीं है।
शमौन Perepelitsa

2
फ़ि: यदि आप केवल एक निश्चित मामले में एक वर्ग को शामिल करना चाहते हैं और अन्य मामलों में कुछ भी नहीं है जिसे आप बस सेट कर सकते हैं nilऔर विशेषता सेट नहीं की जाएगी,class=""
MMachinegun

14

HAML ने इसे संभालने के लिए एक अच्छा तरीका बनाया है:

.post{class: [!post.published? && "gray"] }

जिस तरह से यह काम करता है वह यह है कि सशर्त का मूल्यांकन किया जाता है और यदि सही है, तो स्ट्रिंग को कक्षाओं में शामिल किया जाता है, यदि यह शामिल नहीं होगा।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.