संपादन योग्य पाठ फ़ील्ड नहीं


82

मेरे पास निम्नलिखित तरीके से एक form_for लिखा है:

<div class="field">
    <%= location.label :city %>
    <%= location.text_field :city, :disabled=>true%>
</div>
<div class="field">
    <%= location.label :country %>
    <%= location.text_field :country, :disabled=>true%>
</div>

जैसा कि आप देख सकते हैं कि 2 टेक्स्टफील्ड अक्षम हैं क्योंकि वे एक jquery फ़ंक्शन द्वारा स्वत: पूर्ण होते हैं और मैं नहीं चाहता कि उपयोगकर्ता उन्हें संभालें। समस्या यह है कि इस तरह, दृश्य नियंत्रक के लिए उस पैरामीटर को पारित नहीं करता है क्योंकि अक्षम हैं !!! क्या नियंत्रक के लिए संपादन योग्य text_field पास नहीं करने का कोई और तरीका है, इस बात का ख्याल रखते हुए कि मैं छिपे हुए क्षेत्र का उपयोग नहीं करना चाहता क्योंकि मैं एक टेक्स्टबॉक्स के अंदर उपयोगकर्ता को परिणाम दिखाना चाहता हूं।

TNX


प्रस्तुत करने से पहले आप jquery के साथ फ़ील्ड को सक्षम नहीं करते हैं?
apneadiving

मैं यह कर रहा हूँ ... क्या आपको नहीं पता कि ऐसा करने के लिए एक क्लीनर तरीका है?
जो

जवाबों:


196

इसे आसानी से बनाओ!

<%= location.text_field :country,:readonly => true%>

9
इस पर हाजिर। रूपों के लिए डब्ल्यू 3 विनिर्देश अलग है disabledऔर read-onlyऔर यह स्पष्ट है कि विकलांग आदानों प्रपत्र डेटा के साथ प्रस्तुत नहीं किया जाना चाहिए बनाता है।
रॉबिन फिशर

1
धन्यवाद! मैं शायद एक और आधे घंटे बिता रहा होगा पता :disabled => trueनहीं क्यों मेरे क्षेत्र जमा कर रहा था।
टॉम हैरिसन

3
लेकिन क्या होगा अगर मैं चाहता हूं कि यह क्षेत्र Createकार्रवाई पर पहुंच योग्य हो ?
क्लोन

1
लेकिन इस विधि से कोई भी जमा करने से पहले संपादित कर सकता है। क्या यह कमजोर नहीं है।
मेकबोर्ग

1
हां, यह कमजोर है। उपयोगकर्ता टैग की readonly="readonly"विशेषता को दूर करने के लिए अपने ब्राउज़र "डेवलपर टूल" (F12 दबाएं) का उपयोग कर सकता है और अपनी inputइच्छानुसार टेक्स्ट फ़ील्ड को संपादित कर सकता है। यदि आपको वास्तव में सुरक्षित होने की आवश्यकता है, तो इनपुट फ़ील्ड को पूरी तरह से हटा दें या मॉडल पर प्रपत्र इनपुट को मान्य करें। यह वैसे भी एक बहुत उपयोगी जवाब था।
BrunoFacca

1

चाल है कि आप जिस चीज को बदलना नहीं चाहते हैं उसके लेबल के साथ संयोजन में "ऑब्जेक्ट" का उपयोग करें। यहां बताया गया है कि आपको इसे कैसे कोडित करना चाहिए:

<%= location.label(:country, f.object.country) %>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.