2016-09-26 3 views
7

मेरे पास Profile मॉडल है, जिसमें height विशेषता है।मैं व्यक्ति की ऊंचाई को सरल_फॉर्म के भीतर कैसे संभाल सकता हूं?

मुझे उपयोगकर्ताओं की ऊंचाई (उर्फ प्रोफाइल) स्टोर करने की आवश्यकता है, लेकिन मुझे पूरा यकीन नहीं है कि यह कैसे करें। मुझे लगता है कि ऐसा करने का सबसे अच्छा तरीका है इंच में टूटा हुआ एक चुनिंदा ड्रॉपडाउन (यानी 4'0 ", 4'1" ... 6'5 ", आदि)। लेकिन मुझे पूरा यकीन नहीं है कि सबसे अच्छा तरीका DB में यह स्टोर करने के लिए।

मैं अभी यह सबसे सरल सिर्फ इंच स्टोर करने के लिए है ग्रहण करेंगे, लेकिन अगर मैं ऐसा कैसे मैं प्रारूप मैं ऊपर निर्दिष्ट में मेरे चयन में ऊंचाई पेश करते हैं।

, मैं सिर्फ एक पूर्णांक क्षेत्र है:।

<%= f.input_field :height, placeholder: "176", class: 'col-lg-9 form-control' %> 
+0

कारण है कि आप एक सेमी क्षेत्र और एक छवि सेमी इंच कन्वर्ट करने के लिए नहीं है। फिर मॉडल में यदि आप आवश्यक हो तो इसे इंच में परिवर्तित करने के लिए तर्क लिख सकते हैं –

+0

@AmitBadhekaPykihStaff मुझे यकीन नहीं है कि मैं आपके सुझाव को समझता हूं। एक "इंच को सेमी में परिवर्तित करने के लिए छवि"? इसका सबसे सही मतलब क्या है? – marcamillion

उत्तर

1

आप इस के लिए एक number field उपयोग कर सकते हैं जब उन ऊंचाई बचत या एक उपयोगकर्ता ऊंचाई को अद्यतन करने के आप उपयोगकर्ता के लिए एक विकल्प प्रदान कर सकते हैं या तोमें यह चुनने। आप सहेजने से पहले उपयुक्त इकाइयों में कनवर्ट करने के लिए या तो javascript or jquery का उपयोग कर सकते हैं या आप before filter का उपयोग संचालन और संचालन के लिए कर सकते हैं।

आप text_field के बजाय निम्नलिखित कार्य कर सकते हैं और आप ऊंचाई के लिए न्यूनतम और अधिकतम मान भी सेट कर सकते हैं।

<%= f.number_field :height, placeholder: "176", class: 'col-lg-9 form-control' %>

+0

लेकिन यह मुझे एक चुनिंदा टैग कैसे देता है जो उपयोगकर्ता को ड्रॉपडाउन में पैरों के विकल्प दिखाता है (यानी 4'0 ", 4'1", 4'2 ", आदि) और फिर इसे सबमिशन पर इंच में परिवर्तित करें। मैं यह कैसे कर सकता हूं? – marcamillion

+0

आप जावा स्क्रिप्ट का उपयोग करके एक चयन टैग बना सकते हैं या रेल का उपयोग करके आप select_tag का उपयोग कर सकते हैं। –

+0

क्या आप अपने उत्तर को कुछ सुझावों के साथ अपडेट कर सकते हैं जो कि ऐसा हो सकता है? धन्यवाद! – marcamillion

0

आप मूल्य और चयन करने के लिए विकल्प के साथ सलेक्ट बॉक्स बना सकते हैं।

उदाहरण के लिए: डेटाबेस में मूल्य 4.4 होगा, लेकिन चयन में विकल्प 4'4

<% arr = (1..10).step(0.1).to_a.map{|k| k.round(1).to_s.sub(".", "'"), [k.round(1) ] } %> 

<%= f.select :height, arr, placeholder: "176", class: 'col-lg-9 form-control' %> 

(1..10) अपने गुंजाइश है, आप यहाँ रख सकते हैं लेकर जो चाहो हो जाएगा।

0

1. सेंटीमीटर के रूप में फ़्लोट करने के लिए हाइगेट चर डेटा प्रकार बदलें।

2. पैर और इंच की डिस्प्ले ड्रॉप डाउन करें और संग्रहीत डेटा प्रदर्शित करने से पहले इसे बचाने और वाइसवर्सा से पहले सेंटीमीटर में परिवर्तित करें।

अपने ध्यान में रखते हुए

:

<select name=profile[height]>height 
<option>4.1</option> 
<option>4.2</option> 
<option>4.3</option> 
<option>4.4</option> 
</select> 

नियंत्रक के अपने बनाने कार्रवाई में:

@profile = Profile.new(profile_params) 
@profile.height = @profile.height*30.48 #convert foot to centimeters 
@profile.save 
0

यहाँ एक उदाहरण कोड का टुकड़ा है कि एक तरह से यह लग सकता है कि पता चलता है। यदि आप चयन विकल्प टैग में इंच पूर्णांक मान जोड़ते हैं, तो आप इसे सहेजने के दौरान jQuery का उपयोग कर पकड़ सकते हैं।

$(document).ready(function() { 
 
    $('#save').on('click', function(){ 
 
    \t alert($('#height').val()); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<select id='height'> 
 
    <option value="72">6'0"</option> 
 
    <option value="73">6'1"</option> 
 
    <option value="74">6'2"</option> 
 
    <option value="75">6'3"</option> 
 
    <option value="76">6'4"</option>  
 
</select> 
 
<input type="button" id="save" value="Save" />

संबंधित मुद्दे