:html => {:class => '...'}
विकल्प के माध्यम से कक्षाओं को परिभाषित करना डिफ़ॉल्ट बिल्डर द्वारा जोड़े गए वर्गों ओवरराइड करता है। हालांकि, आप उन वर्गों को ओवरराइड किए बिना ब्लॉक के भीतर सीएसएस कक्षाएं जोड़ सकते हैं।
form_for
सहायक के साथ, :class
अन्यथा सेट नहीं होने पर एक स्ट्रिंग होगी। संलग्न करते समय अग्रणी स्थान पर ध्यान दें।
<%= form_for @model do |f| %>
<% f.options[:html][:class] << ' form-horizontal' %>
<%# ... %>
<% end %>
<form class="edit_model form-horizontal">
आप simple_form_for
सहायक का उपयोग कर रहे हैं, तो options[:html][:class]
एक सरणी हो जाएगा, और आप अतिरिक्त अग्रणी अंतरिक्ष की जरूरत नहीं है (हालांकि यह दर्द नहीं होगा)।
<%= simple_form_for @model do |f| %>
<% f.options[:html][:class] << 'form-horizontal' %>
<%# ... %>
<% end %>
<form class="simple_form edit_model form-horizontal">
आप एक मॉडल के बजाय एक प्रतीक का उपयोग कर रहे हैं, form_for
वर्ग सेट नहीं होगा, और options[:html][:class]
ब्लॉक में nil
हो जाएगा। लेकिन अगर आप ऐसा कर रहे हैं तो आपके पास कोई नया मॉडल नहीं है या फिर भी बने रहें।
<%= form_for :model do |f| %>
<% f.options[:html][:class] << ' form-horizontal' %>
<%# ... %>
<% end %>
NoMethodError: undefined method `<<' for nil:NilClass
फॉर्म बिल्डर की सुंदरता यह है कि यह स्वचालित रूप से edit_model और new_model कक्षाओं के बीच स्विच करता है।मैं ऑब्जेक्ट को किसी कथन के अंदर रखने के बिना ऐसा करने का एक शानदार तरीका चाहूंगा जो यह पता लगाता है कि यह एक नई वस्तु है या नहीं। – Evan