2011-02-09 11 views
10

मैं अपने सिर को लपेटने की कोशिश कर रहा हूं कि उपयोगकर्ता को सभी फ़ील्ड प्रकारों के साथ कस्टम फॉर्म कैसे बनाएं। यदि कोई मणि है जो बहुत अच्छा होगा, लेकिन मुझे कहीं भी नहीं मिल रहा है।रेल 3: उपयोगकर्ता ने कस्टम फॉर्म बनाया?

तो मैं इस तरह एक जो DB सेटअप:

t.integer :form_id 
    t.string :name 
    t.string :hint 
    t.integer :position 
    t.string :field_type 
    t.boolean :required 
    t.integer :size 
    t.boolean :multiple 
    t.text :values 
    t.timestamps 

और यह काफी मैं कहाँ हूँ है। मैं फ़ील्ड_ टाइप के माध्यम से पुन: प्रयास करने और मूल्यों को वापस करने के बारे में सोच नहीं सकता, साथ ही साथ उन्हें वास्तव में भरने वाले रूपों से जोड़ सकता हूं।

धन्यवाद

+0

कभी इस के लिए एक अच्छा समाधान के साथ आते हैं? ऐसा करने की कोशिश कर रहा है। –

+0

@noel_g – kkampen

उत्तर

12

मुझे लगता है आप Form मॉडल के कुछ प्रकार, और फिर Field मॉडल किसी तरह का है, और एक Form has_many :fields है। सही बात?

फॉर्म का निर्माण काफी सरल से है: फॉर्म को पुनर्प्राप्त करें, सभी फ़ील्ड पर पुनरावृत्त करें, और प्रकार के आधार पर, सही कोड प्रस्तुत करें। यदि आप formtastic या simple_form जैसे कुछ का उपयोग करते हैं तो कोड बहुत सरल है।

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

मुझे लगता है कि आप भी एक फॉर्म के परिणाम सहेजना चाहते हैं? मुझे लगता है कि सबसे आसान तरीका है जैसे में पाठ क्षेत्र में दर्ज किया गया डेटा इस

t.form_id :integer 
t.fields_data :text 

की तरह एक मॉडल का उपयोग करने के लिए और दुकान है जेसन या कुछ। तुम भी तरह

class FormData 
    belongs_to :form 
end 

class FormDataField 
    belongs_to :form_data 
    belongs_to :form_field 
end 

कुछ कर सकते हैं, जबकि इस साफ है (यदि आप एक निश्चित फार्म के लिए खेतों में भर के मूल्यों पर क्वेरी कर सकता है), यह शायद एक ओवरहेड की बहुत अधिक है।

+0

से नीचे का जवाब देखें मैं समझता हूं कि आपकी कहानियां क्या है, और यह स्पष्ट हो रही है। क्या आपके पास नमूना एमवीसी होना चाहिए या यह? Form_data में मैं इसे प्रत्येक form_field के साथ कैसे जोड़ूं? यदि आप किसी भी रत्न या ट्यूटोरियल के बारे में जानते हैं तो मैं बहुत सराहना करता हूं। धन्यवाद। – kkampen

+0

kkampen, ऐसा लगता है कि वहां कुछ भी नहीं है। गुगलिंग के 20 मिनट और कस्टम फॉर्म बनाने पर यह सबसे अच्छा संसाधन है। मैं एक ओपन सोर्स सॉल्यूशन ढूंढना चाहता था लेकिन ऐसा लगता है कि वहां कोई नहीं है। –

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