2013-04-26 6 views
5

आप कैसे सत्यापित करते हैं कि रेल में चेकबॉक्स चेक किया गया है? चेकबॉक्स अंतिम उपयोगकर्ता अनुबंध के लिए है। और यह एक मॉडल खिड़की में स्थित है।रेलों में चेकबॉक्स को कैसे सत्यापित करें

चलें कहना मैं चेकबॉक्स है:

<%= check_box_tag '' %> 


कहाँ और मैं यह कैसे सत्यापित करना चाहिए?

मैंने रेल में चेकबॉक्स सत्यापन के बारे में अधिकतर पोस्ट देखी हैं, लेकिन उनमें से कोई भी मेरी आवश्यकताओं के अनुरूप नहीं है।

उत्तर

14

अपने मॉडल में

validates :terms_of_service, :acceptance => true 

जोड़ा जा रहा है यह क्या करना चाहिए। अधिक जानकारी और विकल्पों के लिए here देखें।

हालांकि, अगर शर्तों को स्वीकार अपने मॉडल के लिए एक फार्म का हिस्सा नहीं है, आप क्लाइंट-साइड सत्यापन का उपयोग करना चाहिए, यानी जावास्क्रिप्ट, इस तरह (jQuery में):

function validateCheckbox() 
{ 
    if($('#checkbox').attr('checked')){ 
     alert("you have to accept the terms first"); 
    } 
} 

आप एक स्क्रिप्ट जोड़ सकते हैं क्लिक पर

<%= javascript_include_tag "my_javascipt_file" %>

और गति प्रदान समारोह: इस तरह आपके विचार के लिए दायर

<%= submit_tag "Submit", :onclick: "validateCheckbox();" %>

संपादित करें: आप इस तरह अपने चेकबॉक्स में एक आईडी असाइन कर सकते हैं: check_box_tag :checkbox। एचटीएमएल इस तरह दिखेगा: <input id="checkbox" अधिक विकल्पों के लिए these examples देखें।

+0

उस स्थिति में, मैं चेकबॉक्स को "नाम" कैसे दूंगा? – geirmash

+0

@ user2019492 - कृपया संपादित करें – kostja

+2

कोस्टजा काफी अच्छी व्याख्या प्रदान करता है, हालांकि मैं व्यक्तिगत रूप से क्लाइंट-साइड और मेरे नियंत्रकों में स्वीकृति सत्यापन करना पसंद करता हूं, फिर स्वीकार किए जाने पर मैं वर्तमान समय को उपयोगकर्ता मॉडल को " accept_conditions_at "इस तरह की विशेषता मैं आसानी से बनाए रख सकता हूं और अगर उपयोगकर्ता किसी कारण से बदलता है तो उपयोगकर्ता मेरी शर्तों की शर्तों को दोबारा स्वीकार कर सकता है – dennis

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