विचारों में तर्क से बचना
मानक दृष्टिकोण के साथ समस्या यह है कि इसे if
देखने में कथन या टर्नरी के रूप में तर्क की आवश्यकता होती है । यदि आपके पास कई सशर्त सीएसएस कक्षाएं डिफ़ॉल्ट कक्षाओं के साथ मिश्रित हैं, तो आपको उस तर्क को एक स्ट्रिंग प्रक्षेप या ईआरबी टैग में डालने की आवश्यकता है।
यहां एक अद्यतन दृष्टिकोण है जो किसी भी तर्क को विचारों में डालने से बचता है:
<div class="<%= class_string(ok: @success) %>">
some message here
</div>
class_string
तरीका
class_string
सहायक से मिलकर कुंजी / मान जोड़े के साथ एक हैश लेता CSS वर्ग नाम तार और बूलियन मान । विधि का परिणाम उन वर्गों की एक स्ट्रिंग है जहां बूलियन मूल्य का मूल्यांकन सही है।
नमूना उपयोग
class_names(foo: true, bar: false, baz: some_truthy_variable)
# => "foo baz"
अन्य उपयोग के मामले
इस सहायक का उपयोग ERB
टैग के भीतर या रेल सहायकों जैसे कि के साथ किया जा सकता है link_to
।
<div class="<%= class_string(ok: @success) %>">
some message here
</div>
<% div_for @person, class: class_string(ok: @success) do %>
<% end %>
<% link_to "Hello", root_path, class: class_string(ok: @success) do %>
<% end %>
या तो / या कक्षाएं
उपयोग के मामलों के लिए जहां एक त्रिगुट आवश्यक होगा (जैसे @success ? 'good' : 'bad'
), एक सरणी पास करें जहां पहला तत्व कक्षा के लिए है true
और दूसरा इसके लिए हैfalse
<div class="<%= [:good, :bad] => @success %>">
रिएक्ट से प्रेरित है
यह तकनीक फेसबुक के फ्रंट-एंड फ्रेमवर्क से एक ऐड-ऑन classNames
(जिसे पहले कहा जाता था classSet
) से प्रेरित है React
।
अपने रेल परियोजनाओं में उपयोग करना
अब तक, class_names
फ़ंक्शन रेल में मौजूद नहीं है, लेकिन यह आलेख आपको दिखाता है कि इसे अपनी परियोजनाओं में कैसे जोड़ा या लागू किया जाए।