2010-02-15 11 views
10

मैं एक रेल ऐप बना रहा हूं, और मेरे पास User नामक एक मॉडल है। इस मॉडल में मेरे पास isagirl नामक एक बूलियन मान है। उपयोगकर्ता को यह निर्दिष्ट करना होगा कि यह एक लड़की है या नहीं, जो दो रेडियो बटनों द्वारा की जाती है।validates_presence_of +: संदेश फ़ील्ड का नाम दिखाता है

validates_presence_of :isagirl, :message => "You must be either a Boy or a Girl. If not, please contact us." 

हालांकि, जब मैं एक सेक्स निर्दिष्ट नहीं करते हैं, मैं यह देख रहा हूँ:

Isagirl आप या तो एक लड़का है या लड़की होना चाहिए अपने मॉडल में मैं इस किया है।

एक त्रुटि संदेश के रूप में। समस्या यह है कि त्रुटि संदेश में 'Isagirl' नहीं होना चाहिए। मैं इसे कैसे अक्षम कर सकता हूं? और नहीं, इसे छिपाने के लिए सीएसएस का उपयोग करना कोई विकल्प नहीं है।

धन्यवाद

+4

इसके लायक होने के लिए, यदि संभव हो तो गैर-बाइनरी लिंगों को फॉर्म में समर्थन करना एक अच्छा विचार है –

उत्तर

8

तरह से है कि मैं इस उत्पादन के लिए फ़ील्ड नाम के बिना संदेश है। उदाहरण के लिए, मेरे पास आंशिक है जो प्रमाणीकरण विफल होने के बाद त्रुटि संदेशों को आउटपुट करता है।

<ul> 
    <% errors.each do |attribute, message| -%> 
     <% if message.is_a?(String)%> 
      <li><%= message %></li> 
     <% end %> 
    <% end -%> 
</ul> 

ध्यान दें कि यह विशेषता आउटपुट नहीं करता है। आपको बस यह सुनिश्चित करने की ज़रूरत है कि आपके सभी संदेश एक विशेषता नाम के बिना समझ में आता है।

+0

ठीक है, लेकिन यह कोड कैसे जानता है कि आप किस फॉर्म को चाहते हैं? –

0

मैं कैसे validates_presence_of समारोह में मौजूद विशेषता छोड़ (यह गंदा हैकिंग के बिना दर्द हो सकता है) पता नहीं है, लेकिन मैं सत्यापित करें फ़ंक्शन का उपयोग प्राप्त करने के लिए आप क्या चाहते हैं:

protected 
    def validate 
     errors.add_to_base("You must be either a Boy or a Girl. If not, please contact us.") if params[:isagirl].blank? 
    end 

मैं विशेष रूप से प्रयोग किया जाता है विधि खाली है? यहां क्योंकि validates_presence_of खाली उपयोग कर रहा है? परीक्षण के लिए आपको यह वही व्यवहार मिलना चाहिए।

add_to_base सामान्य त्रुटि संदेशों को जोड़ रहा है जो विशेषताओं से संबंधित नहीं हैं और यह आपको दृश्य हैकिंग से बचाता है।

5

मेरी परियोजनाओं में से एक में मैं custom-err-msg प्लगइन का उपयोग कर रहा था।

:message => "^You must be either a Boy or a Girl. If not, please contact us." 

(नोटिस ^ शुरुआत में) यह विशेषता नाम जब त्रुटियों मुद्रण मुद्रित नहीं होगा: इसके साथ आपको त्रुटि संदेश इस तरह से निर्दिष्ट है। और आप मानक error_messages या error_messages_for सहायक का उपयोग कर सकते हैं।

+0

उत्तर के लिए अंगूठे ऊपर :) – bharath

+0

एफवाईआई, इस मणि को अब 'custom_error_message' कहा जाता है और यह यहां उपलब्ध है: https://github.com/jeremydurham/custom-err-msg – Martin

0

मैं त्रुटियों का उपयोग करने की सलाह देता हूं .add_to_base विकल्प। यह जानने के बिना कि आपका लेआउट कैसा दिखता है, यह एक सादा त्रुटि संदेश प्रकट करने का सबसे आसान तरीका होगा।

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