मैं कुछ सलाह के लिए देख रहा हूँ मूल रूप से दो वर्गों है कि एक आतंक विरोधी आवेदन के लिए ऊपर डिजाइन करने पर:रूबी और JQuery
1) व्यवस्थापक पर्चा बिल्डर 2) अंतिम उपयोगकर्ता फॉर्म (कि बनाया गया था चरण 1)
मैं JQuery फार्म (अंतिम परिणाम नमूने है) मैं चाहता हूँ और यह "प्रगतिशील प्रकटीकरण" (कार्रवाई पुस्तक में JQuery में Yehuda Katz के बांस उदाहरण की तरह) का उपयोग करता है में व्यवस्थापक द्वारा, इसलिए यदि आप क्लिक करें एक आइटम एक और आइटम खुल सकता है (उदाहरण के लिए "पंजीकरण चेकबॉक्स" पर क्लिक करें और दूसरा पंजीकरण उप-फॉर्म प्रदर्शित होता है)। मेरे पास रेल अनुप्रयोग वास्तव में वर्णित कुछ इनपुट बना रहा है। हालांकि, मुझे लगता है कि मैं वास्तव में रूबी की गतिशील क्षमताओं का उपयोग नहीं कर रहा हूं।
module Levin
module EventReg
module Jquery
def self.simple_registration_text(input_params)
raise ArgumentError if input_params.nil?
ip_id = input_params[:input_div_id]
simple_reg_input_html = '<p><label for="'
simple_reg_input_html << "#{ip_id + '_label_id'}\">"
........<A BUNCH MORE CODE TO BUILD INPUT>........
simple_reg_input_html << ' class="required"' unless input_params[:is_required].eql?("0")
simple_reg_input_html << '/></p>'
end
असल में, व्यवस्थापक इनपुट आइटम नाम कर सकते हैं और मैं का उपयोग div id के, आदि के लिए है कि मैं यह देखते हुए कि: उदाहरण के लिए, यहाँ है कि एक विशेष साधारण एचटीएमएल इनपुट बनाता है मेरी मॉड्यूल तरीकों में से एक का एक टुकड़ा है कई इनपुट प्रकार हैं (ड्रॉप डाउन, टेक्स्टरेअस, चेकबॉक्स के साथ इनपुट प्रकार टेक्स्ट जैसे बच्चों के साथ इनपुट, चेक किए जाने पर, डेटा ग्रिड खोलता है, जो एक संवाद पॉपअप फॉर्म आदि के माध्यम से आइटम जोड़/हटा सकता है), मैं ' डी उपरोक्त मेरे उदाहरण में "हार्ड-वायरिंग" निर्माण विधियों से बचने के लिए पसंद है। साथ ही, कॉलर को दोनों इनपुट मूल्य विकल्पों के लिए ज़िम्मेदार होने की अनुमति देना बहुत अच्छा होगा (जो इनपुट पैराम पैरामीटर पास करते समय पहले से ही हो रहा है), और बिल्डर स्वयं भी।
मैं बहुत कार्यात्मक प्रोग्रामिंग करने के लिए नया हूँ, लेकिन मैं फोन करने वाले एक "निर्माता" लैम्ब्डा कि विशिष्ट रूप इनपुट वे इनपुट का उपयोग कर की जरूरत है बनाता है में पास करने का प्रभावित करने के लिए कुछ के बारे में सोच रहा हूँ करने के लिए अग्रणी पैरामीटर:
builder_lambda.call(input_params)
लेकिन जब मैं इसके बारे में सोचता हूं, ऐसा लगता है कि लैम्ब्डा जेक्री मॉड्यूल पहले से ही क्या कर रहा है। हां, कॉलर के पास अपनी पसंद के लिए कस्टम बिल्डर बनाने की क्षमता होगी, लेकिन फिर मेरी मॉड्यूल विधि वास्तव में क्या करेगी! यह क्या मूल्य प्रदान करेगा?
मुझे कभी-कभी इन इनपुट को विशिष्ट ईवेंट हैंडलर से कनेक्ट करने की आवश्यकता होगी।
builder_lambda.call(input_params)
add_event_handlers_lambda.call(input_params)
मैं सही रास्ते पर हूँ: शायद वहाँ lamdas की एक सरणी, एक बिल्डर और की तरह एक ऐड ईवेंट हैंडलर हो सकता है? खेद है कि अगर मैं जुआ कर रहा हूं, लेकिन मुझे स्पष्ट रूप से इस समस्या को "रूबी-इटिकिक" समाधान में विघटित करने में समस्या हो रही है और अधिक गतिशील दृष्टिकोण के विचारों की सराहना की जाएगी।
संपादित करें: यह मेरे लिए मददगार था: Obie Fernandez DSL Development PDF
@Rob, मैं एक समान परियोजना पर काम कर रहा हूं, और आपके द्वारा दिया गया लिंक बहुत उपयोगी था। चीयर्स! – Anurag
सवाल क्या है? = पी – thomasfedb
आपका नमूना कोड बेहद "अन-रूबी-इटिकिक" है, लेकिन मुझे एहसास हुआ कि आप उसे जानते थे। मैं ओबी की पुस्तक "द रेल्स 3 वे" की अत्यधिक अनुशंसा करता हूं। अधिक "रूबी-इटिकिक" होने के लिए मेरी सबसे अच्छी सलाह पीछे की ओर काम करना है। कोई कस्टम कोड का उपयोग कर अपना पहला फॉर्म बनाएं। फिर अपना दूसरा फॉर्म और शायद एक तिहाई बनाएं। एक बार जब आप देखेंगे कि आपका डुप्लिकेशंस फिर रिएक्टर होगा। जब आप रिफैक्टर करना शुरू करते हैं, तो पहले एपीआई लिखें। इससे पहले कि आप सोचें कि "इस काम की हिम्मत कैसे होगी" सोचने से पहले "मैं इसे कैसे काम करना चाहता हूं" सोचें। भले ही आप पहले परीक्षण नहीं लिख रहे हैं (!!!) यह मानसिकता होने के लिए अभी भी अच्छा है। आपका कोड क्लीनर होगा। प्रस्तुति को जोड़ने के लिए – MDaubs