2010-02-10 8 views
15

में कॉलम के बिना नियम और शर्तों के लिए चेकबॉक्स, मुझे एक पृष्ठ पर "सेवा की शर्तें स्वीकार करें" चेकबॉक्स की आवश्यकता है, इसे आगे बढ़ने के क्रम में जांचना होगा। ऐसा इसलिए लगता है कि डेटाबेस से कॉलम होने के लिए यह अजीब लगता है (क्या उपयोगकर्ता ने शर्तों को स्वीकार या अस्वीकार कर दिया है)। पल यह बिल्कुल काम नहीं कर रहा परडेटाबेस

validates_acceptance_of :terms 

:

मैं मेरे विचार में इस तरह के फार्म सहायक उपयोग कर रहा हूँ:

<%= check_box("client", "terms") %> 

और मेरे मॉडल में।

यह कोड का एक बहुत ही आम टुकड़ा जैसा लगता है, फिर भी मुझे मॉडल में शर्तों के बिना कहीं भी इसका उपयोग नहीं किया जा सकता है। अन्यथा मैं इसे सत्यापित करने के लिए जावास्क्रिप्ट का उपयोग कर सकता हूं, लेकिन इसे सभी मॉडल में रखना पसंद करूंगा।

+0

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

उत्तर

12

यह ठीक काम करना चाहिए एक डेटाबेस स्तंभ या attr_accessor बिना: http://guides.rubyonrails.org/active_record_validations.html#acceptance

मैं जाँच करने के लिए अपने परम हैश यह अर्थात् किया जाना चाहिए के रूप में है कि 'शर्तों' विशेषता 'ग्राहक के भीतर पारित किया जा रहा है इच्छुक किया जाएगा 'हैश, शायद आपके नियंत्रक पर raise params.inspect जोड़ने का प्रयास करें जिससे आप डीबग करने में मदद कर सकें?

+0

चीयर्स, यह बहुत अच्छा काम करता है - और मैंने degbugging के बारे में कुछ सीखा! – vectran

+0

रेल गाइड टू लिंक टूटा हुआ है – CharlesJHardy

+0

लिंक फिक्स्ड - धन्यवाद चकजहार्डी –

5
अपने ग्राहक मॉडल में एक attr_accessor :terms होने के बारे में

क्या?

+0

धन्यवाद! यह मेरे लिए काम करता था क्योंकि मैंने इसे अपने attr_accessor में शामिल नहीं किया था, इस प्रकार यह सत्यापन के लिए पारित नहीं हुआ था। –

0

या तो @ न्युट्रीनो समाधान के साथ जाना है, या पुनर्स्थापित करने के लिए: शब्द "स्वीकार नहीं" अगर आप (क्योंकि मान्यता विफल हो सकता है) प्रपत्र पुन: प्रदर्शित करने की आवश्यकता है, इस का उपयोग करें:

def terms 
    nil 
end 

def terms=(val) 
    # do nothing 
end 
1

attr_accessor: शब्दों का क्या होगा अच्छी तरह से चाल है।

controller में, मैं जोड़ लिया है:: terms_of_service एक की अनुमति दी क्षेत्र के रूप में:

def application_params 
    params.require(:application).permit(. . . , :terms_of_service) 
end 

model में:

attr_accessor :terms_of_service 
validates :terms_of_service, :acceptance => true 

में

0

मैं इस इन सेटिंग्स के साथ काम करने के लिए किया था view:

<%= f.check_box("terms_of_service", :checked => false) %>