विचारों में तर्क से बचना
मानक दृष्टिकोण के साथ समस्या यह है कि इसे 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फ़ंक्शन रेल में मौजूद नहीं है, लेकिन यह आलेख आपको दिखाता है कि इसे अपनी परियोजनाओं में कैसे जोड़ा या लागू किया जाए।