What are the Rails best practices for javascript templates in restful/resourceful controllers? -


सबसे पहले, 2 सामान्य (बुनियादी) दृष्टिकोण:

  # कुछ फ़्यूज़ कंट्रोलर विधि response_to से लौट रहा है Do | format | # 1. एक जेसन प्रस्तुतीकरण प्रारूप को प्रस्तुत करना। जेसन {रेंडर: जेसन = & gt; @ फ़ू} # 2. एक आरजेएस टेम्पलेट रेंडर करें, update.js.erb format.js का कहना है {render} end # update.js.erb $ ('# foo')। Html ("& lt;% = escape_javascript (रेंडर करें ( @foo))%);)  

यह स्पष्ट रूप से सरल मामला हैं लेकिन मैं यह बताना चाहता हूं कि मैं किस बारे में बात कर रहा हूँ मेरा मानना ​​है कि ये भी आरआर 3 में डिफ़ॉल्ट प्रत्युत्तर द्वारा अपेक्षित मामलों (या तो कार्रवाई नामित डिफ़ॉल्ट टेम्पलेट या संसाधन पर _ # {format} को कॉल कर रहे हैं।)


मुद्दे

1 के साथ, आपके पास टेम्प्लेट के बारे में कोई चिंता नहीं होने के साथ दृश्य पक्ष में कुल लचीलेपन है, लेकिन आपको सीधे जावास्क्रिप्ट के माध्यम से डोम को हेरफेर करना होगा आप सहायकों, आंशिक, आदि तक पहुंच खो देते हैं।

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


तीन अन्य दृष्टिकोण (कोई भी वास्तव में संतोषजनक नहीं है)

1) एस्केप आंशिक / सहायकों को पहले से जावास्क्रिप्ट की ज़रूरत है, फिर उन्हें परिणाम में लौटने के लिए स्ट्रिंग प्रतिस्थापन का उपयोग करके पृष्ठ में डालने की आवश्यकता है (नाम, आईडी, आदि में सबबिंग)।

2।) तर्क देखें टेम्पलेट्स में उदाहरण के लिए, एक विशेष डोम तत्व की तलाश और एक बात अगर यह मौजूद है, एक और अगर ऐसा नहीं है।

3।) अलग-अलग टेम्पलेट्स को प्रस्तुत करने के लिए नियंत्रक में तर्क दें। उदाहरण के लिए, एक बहुरूपिक में यह है कि किसी टिप्पणी / फ़ू या पोस्ट / फू के लिए अपडेट कहां हो सकता है, कॉमन्स / फ़ूज़ / अपडेट.जेस। बीपी बनाम पोस्ट / फोज़ / अपडेट.जेस। बीबी।


मैंने इन सभी (और संभवत: अन्य लोगों की सोच नहीं की है) का उपयोग किया है अक्सर एक ही ऐप में, जो कोड भ्रमित हो जाता है। क्या इस प्रकार की चीज़ों के लिए सर्वोत्तम अभ्यास हैं? ऐसा लगता है कि एक आम उपयोग-मामले की तरह आप अलग-अलग विचारों से अजाक्स कार्रवाइयों के माध्यम से नियंत्रकों को कॉल करना चाहते हैं और अलग-अलग चीजों को होने की अपेक्षा करते हैं (आंशिक और सहायताकर्ता क्लाइंट पक्ष को छोड़कर स्ट्रिंग-स्ट्रिंग-प्रतिस्थापन जैसी कठोर चीज़ों के बिना)। / P>

कोई भी विचार?

सबसे अच्छा अभ्यास यह है कि आपका वेब यूआई रीस्टिड का इस्तेमाल करे एपीआई। यही है, क्लाइंट में जावास्क्रिप्ट चलने वाले JSON प्रारूप में संसाधनों को प्राप्त करें और रखिए, जैसे किसी तीसरी पार्टी को RestClient का उपयोग करके JSON प्रारूप में संसाधन मिल सकता है और रख सकता है। इसका अर्थ है कि आपके पास सर्वर पर .rjs या .js.erb टेम्पलेट नहीं हैं - आप में मुंह या हैंडलेबर्स या jQuery टेम्पलेट्स हो सकते हैं, प्लस गोंद जावास्क्रिप्ट, एम्बेडेड मूल रूप से वेब क्लाइंट को दिया गया एचटीएमएल पृष्ठ (या स्थिर रूप से जुड़े) में।

बेशक, remote = & gt; का उपयोग करने का त्वरित और गंदा दृष्टिकोण सच है , और जावास्क्रिप्ट को जावास्क्रिप्ट बनाने के लिए जावास्क्रिप्ट कोड टेम्पलेट को सर्वर पर जा रहा है और प्रस्तुत किया जा रहा है जो क्लाइंट पर निष्पादित होगा ... आसान है। और कुछ समय के लिए यह काफी अच्छा अभ्यास था। लेकिन अब हमें एक डाटा प्रारूप के लिए जावास्क्रिप्ट की आवश्यकता है, और आजकल हम जेएसएएन प्रारूप में डेटा खींचने और क्लाइंट के भीतर टेम्पलेट्स प्रदान करने के लिए बेहतर क्षमताएं हैं।


Comments

Popular posts from this blog

windows - Heroku throws SQLITE3 Read only exception -

lex - Building a lexical Analyzer in Java -

python - rename keys in a dictionary -