मेरे पास जन्म_डेट फ़ील्ड है जो डेटाटाइम मान के रूप में संग्रहीत है। डिफॉल्ट रेल फॉर्म हेल्पर्स एक बहुत ही अनुकूल प्रारूप को थूकते हैं, उदा। "2008-06-10 22: 33: 1 9 .000000"। नीचे वेनिला रेल मार्ग है।रेल: टेक्स्ट_फील्ड के लिए मानव-अनुकूल दिनांक प्रारूप
<div class="field">
<%= f.label :birth_date %>
<%= f.text_field :birth_date, :size=>"20" %>
</div>
मैं बस एक प्रारूप कैसे लागू कर सकता हूं? मैंने विभिन्न दृष्टिकोणों की कोशिश की, उदाहरण के लिए बार-बार काम करना चाहिए, मैंने सोचा। लेकिन जब मैं निम्नलिखित की कोशिश, मैं एक त्रुटि undefined method 'strftime' for nil:NilClass
<div class="field">
<%= f.label :birth_date %>
<%= f.text_field :birth_date, :value=>f.object.birth_date.strftime('%m/%d/%Y'), :size=>"20" %>
</div>
कुछ अन्य प्रश्न/उत्तर के आधार पर मिलता है, मैं निम्नलिखित की कोशिश की। यह गैर-शून्य मानों के लिए काम करता है, लेकिन यह बदसूरत कोड है, और यह खाली मूल्यों के लिए काम नहीं करता है (वास्तव में यह आज की तारीख दिखाता है)।
<div class="field">
<%= f.label :birth_date %>
<%= f.text_field :birth_date, :value=> Time.parse(f.object.birth_date.to_s).strftime('%m/%d/%Y'), :size=>"20" %>
</div>
चारों ओर खेलने में, ऐसा लगता है कि outputting f.object.birth_date, एक तारीख के रूप में व्यवहार किया जाता है बल्कि datetime से। हालांकि, जब टेक्स्ट_फील्ड (मूल, बदसूरत स्वरूपण) में प्रदर्शित होता है, तो इसमें समय शामिल होता है। यह शुक्रवार की दोपहर है, और रेल के रूपों और रूबी तिथि/समय वस्तुओं के साथ परिचित होने की मेरी संयुक्त कमी मुझे मूर्ख महसूस कर रही है।
मेरे फॉर्म को शून्य/खाली, और एक दोस्ताना तारीख को प्रदर्शित करने के लिए कोई भी आसान तरीका नहीं है?
धन्यवाद, मुझे जो चाहिए वह करता है। मैं उलझन में था कि यह शून्य जांच के बिना ऐसा करने में त्रुटि क्यों नहीं फेंकता है। मुझे लगता है कि मैंने इसे हल किया है। यह वही करता है जो मैं चाहता हूं (हालांकि अभी भी बहुत सारे कोड की तरह लगता है)। –
आपका स्वागत है। 'Nil' चेक के बिना त्रुटि को फेंकने का कारण यह है कि जब 'f.object.birth_date'' nil' है, तो आप उस पर' strftime' कॉल करने का प्रयास करेंगे। चूंकि 'शून्य' में 'स्ट्रेटटाइम' विधि नहीं है, इसलिए यह त्रुटि फेंकता है। – Claw