2011-08-24 15 views
19

जब मैं अपना फॉर्म जमा करता हूं तो मैं पोस्ट में भेजे जाने की तारीख देख सकता हूं। हालांकि, यह तारीख को बचा नहीं है। अगर मैं डेट डेट करता हूं तो यह कहता है कि यह उचित प्रारूप में नहीं है। यहाँ मेरी दिनांक पिकर समारोह है, यह ठीक प्रदर्शित करता है:रेल 3 jquery date picker date डेटाबेस को सहेज नहीं रहा

$j(function(){ 
    $j("#mile_date").datepicker(); 
}); 

$ j है, क्योंकि मैं प्रोटोटाइप का उपयोग कर रहा और साथ ही इसलिए सभी jQuery कॉल noConflict चर का उपयोग कर रहे हैं।

यहाँ पोस्ट है:

Parameters: {"utf8"=>"Γ£ô", "authenticity_token"=>"Fj4HW/B4EOan/vcPZLJ75TvWkRH4ZKSFsPLlQLSD0cI=", "mile"=>{"odometer"=>"", "trip"=>"428.2 
", "gallons"=>"24.959", "note"=>"", "temperature"=>"", "date"=>"06/22/2011"}, "commit"=>"Create Mile"} 

तो यह तिथि ठीक भेजता है लेकिन रेल प्रारूप पसंद करने के लिए प्रतीत नहीं होता। यह डेटाबेस में एक शून्य मान डालता है। अगर मैं ड्रॉप-डाउन का यह इस भेजता है और साथ डिफ़ॉल्ट datefield साथ जमा करें ठीक सहेजता है: '2011-06-22'

करता रेल के लिए 3 चर में तारीख की उम्मीद:

Parameters: {"utf8"=>"Γ£ô", "authenticity_token"=>"Fj4HW/B4EOan/vcPZLJ75TvWkRH4ZKSFsPLlQLSD0cI=", "mile"=>{"odometer"=>"", "trip"=>"428.2 
", "gallons"=>"24.959", "mpg"=>"17.156136063144", "note"=>"", "temperature"=>"", "date(1i)"=>"2011", "date(2i)"=>"6", "date(3i)"=>"22"}, "c 
ommit"=>"Create Mile"} 

डालने बयान में यह के रूप में की तारीख सम्मिलित करता है सही ढंग से दिनांक प्रारूप का निर्माण? मैं सही दिनांक प्रारूप भेजने के लिए डेटपिकर कैसे प्राप्त कर सकता हूं?

अग्रिम धन्यवाद,

उत्तर

36

मैं एक ही मुद्दे में भाग गया। एक समाधान बस उस स्वरूप datepicker का उपयोग करता है बदलने के लिए है:

// in your javascript... 
$j(function(){ 
    $j("#mile_date").datepicker({ 
    dateFormat: "yy-mm-dd" 
    }); 
}); 

रेल yy-MM-DD प्रारूप को संभालने में सक्षम हो रहा है - मुझे लगता है कि उपयोग कर रहा हूँ और करने के लिए तारीख की बचत कोई मुद्दा नहीं हो रहा है डेटाबेस। यहां एकमात्र मुद्दा यह है कि कुछ yy-mm-dd प्रारूप को एमएम/डीडी/yyyy की तुलना में थोड़ा कम दिखने वाले मिल सकते हैं ...

+0

धन्यवाद, कि यह किया गया था। – Xaxum

+2

एक समाधान पोस्ट किया गया जहां उपयोगकर्ता एक तरफ देखता है और आप hidden_field के साथ उचित प्रारूप सबमिट करते हैं। मूल समस्या को इंगित करने के लिए फिर से धन्यवाद क्योंकि मैंने कहीं और देखा कि रेल तारीख को बदल देंगे। – Xaxum

+0

सिर्फ उसी समस्या में चल रहे लोगों के लिए, पैरामीटर का नाम 'प्रारूप' है और अब 'डेटफॉर्मैट' नहीं है – Viro

20

जैसा कि रेल के ऊपर @BaronVonBraun द्वारा नोट किया गया है, उस प्रारूप को संभालने में प्रतीत नहीं होता है। जैसा कि उन्होंने सुझाव दिया था इसे बदलना। हालांकि, उन लोगों के लिए जो yy-mm-dd से भिन्न प्रारूप चाहते हैं, आप निम्न का उपयोग कर सकते हैं। उपयोगकर्ता आपके इच्छित प्रारूप को देखता है, जबकि रेलों को प्रारूप की आवश्यकता होती है।

$j(function(){ 
    $j("#show_date").datepicker({altField: '#mile_date', altFormat: 'yy-mm-dd'}); 
}); 

SHOW_DATE प्रदर्शन क्षेत्र वे देखते हैं की आईडी और mile_date तारीख रेल जरूरतों के साथ एक छिपी हुई फ़ील्ड है।

यहाँ documentation है।

0
j('.jquery-calendar').datepicker().each(function(){ 
    // convert dates from db to US format 
    var $input = j(this) 
    var found = $input.val().match(/^(\d{4})-(\d{2})-(\d{2})$/); 
    if(found){ 
    $input.val(found[2]+'/'+found[3]+'/'+found[1]); 
    } 
}); 
1

अगर कोई jquery_datepicker gem उपयोग कर रहा है, तो आप अपने रेल देखने के लिए निम्न कोड को कुछ इसी तरह का उपयोग करना चाहेंगे।

<%= form.hidden_field(:ship_date, :id => "ship_date") %> 
<%= datepicker_input(:show_date, item.id, :size => 10, altField: "#ship_date", altFormat: 'yy-mm-dd', :value => item.ship_date.strftime("%m/%d/%Y"))%> 

तुम भी form.datepicker_input का उपयोग प्रपत्र को सीधे दिनांक पिकर संलग्न करने के लिए कर सकते हैं, लेकिन मेरे उपयोग के मामले में, मैं स्थानीय तारीख है, जो रेल स्वीकार नहीं करेगा प्रतिबिंबित करने के लिए दिनांक पिकर चाहता था। तो मैंने एक छिपी हुई फॉर्म तत्व जोड़ा और इसे वैकल्पिक क्षेत्र सेट किया, पूरी तरह से काम करता है!

0

hacky की किंडा लेकिन सेट बातें सीधे एक सहायक बनाया जब मैं जानता हूँ कि मैं mm-dd-yy प्रारूप में सर्वर दिनांकों दे रहा हूँ

def convert_to_y_m_d(date) 
    new_date = date.split("-")[2] + "-" + date.split("-")[0] + "-" + date.split("-")[1] 
    new_date 
end 
संबंधित मुद्दे