model.rb प्रयुक्त before_save
कॉलबैक दिनांक को वापस परिवर्तित करने के लिए करने के लिए
जोड़ा आभासी विशेषताओं @Althaf से मिले मदद से समाधान।
before_save :convert_to_datetime
def sched_date_field
sched_date.strftime("%d/%m/%Y") if sched_date.present?
end
def sched_time_field
sched_time.strftime("%I:%M%p") if sched_time.present?
end
def sched_date_field=(date)
# Change back to datetime friendly format
@sched_date_field = Date.parse(date).strftime("%Y-%m-%d")
end
def sched_time_field=(time)
# Change back to datetime friendly format
@sched_time_field = Time.parse(time).strftime("%H:%M:%S")
end
def convert_to_datetime
self.sched_time = DateTime.parse("#{@sched_date_field} #{@sched_time_field}")
end
का उपयोग करते हुए रेल 4, controller.rb में सख्त पैरामीटर को sched_date_field और sched_time_field जोड़ने की जरूरत
यहाँ _form.html.erb में क्षेत्र हैं
<%= f.label :sched_date_field, "Scheduled Date" %>
<%= f.text_field :sched_date_field, :class => "datepicker" %>
<%= f.label :sched_time_field, "Scheduled Time" %>
<%= f.text_field :sched_time_field, :class => "timepicker" %>
सख्त पैराम द्वारा, क्या आपका मतलब "मजबूत पैरा" है? साथ ही, यह कोड शेड_टाइम पर एक अपरिभाषित चर त्रुटि उत्पन्न करने लगता है। –
यह एक बढ़त मामला है, लेकिन यदि आप इस तकनीक का उपयोग करते हैं और 'sched_time' फ़ील्ड पर किसी भी सत्यापन की आवश्यकता है, तो यह असफल हो जाएगा। आप 'first_save' को' pre_validation' में बदलने का प्रयास कर सकते हैं। लेकिन फिर, यदि आपके पास कैस्केडिंग सत्यापन हैं तो यह असफल हो सकता है। इस छोटी टिप्पणी में व्याख्या करने के लिए थोड़ा मुश्किल है, लेकिन मेरा विश्वास करो, यह असफल हो जाएगा। – Karl
@ करल आप इसके बजाय क्या सिफारिश करते हैं? मैं इस समस्या में भाग रहा हूँ ..मैं दिनांक, समय और टाइमज़ोन को 3 अलग-अलग फ़ील्ड के रूप में स्टोर करने के लिए अपना डेटा मॉडल बदलने की सोच रहा हूं। – Turgs