2009-01-10 7 views
6

रेल में, क्या यह फॉर्म हेल्पर्स का उपयोग करने की अनुशंसा की जाती है? आंतरिक रूप से, सबकुछ सादे एचटीएमएल पर उबाल जाता है तो एचटीएमएल सीधे क्यों नहीं लिखते? समर्थकों का उपयोग करने से प्रत्यक्ष एचटीएमएल लिखने में प्रदर्शन स्पष्ट रूप से बेहतर होगा। क्या फॉर्म हेल्पर्स का उपयोग एक सम्मेलन या कुछ ऐसा है जो रेल डेवलपर्स का पालन करना चाहिए?रेल में, फॉर्म हेल्पर्स का उपयोग करना है या नहीं?

उत्तर

13

प्रदर्शन परिभाषित करें। आपका प्रदर्शन या अनुप्रयोग? मान लें कि आपके पास अपने विचारों में एक ही rhtml स्निपेट फैल गया है। मान लें कि आपके पास हजारों स्थानों पर है। हो सकता है कि आपने इसे बिल्कुल सभी स्थानों पर भी प्राप्त नहीं किया है। अब आपका ग्राहक इसे बदलना चाहता है (शायद प्रस्तुति के अलग-अलग क्रम या कुछ ऐसे)। यह आपको सभी विचारों में करने में कुछ समय लगेगा, है ना? और संभावना है कि आप पहली बार सही नहीं पाएंगे। संभावनाएं वास्तव में हैं कि आप उन स्थानों पर आने वाले वर्षों के लिए बग रिपोर्ट प्राप्त करना जारी रखेंगे जिन्हें आप बदलना चाहते हैं।

ग्राहक "प्राप्त" प्राप्त करने के लिए बहुत कुछ चुकाएगा। शायद सैकड़ों कामकाजी घंटे। यदि आप सिद्धांत पर डीआरवाई सिद्धांत से बचते हैं तो शायद हजारों लोग। उन सभी सर्वरों और उन सभी रैम के बारे में सोचें जो वह उन कार्य घंटों के लिए खरीद सकती थीं। अगर उसने इसे हार्डवेयर पर बिताया तो उसका आवेदन सौ गुना तेजी से चला सकता है। उन सभी मजेदार चीजों के बारे में सोचें जो आप एचटीएमएल स्निपेट को बदलने के बजाय बंदरगाह के बजाय काम कर सकते हैं।

+1

रेल और डीआरवाई के लाभों में से एक ऐसा है जैसा आप रेखांकित करते हैं, इसे इंगित करने के लिए धन्यवाद! प्रदर्शन गति को प्रस्तुत करने से कहीं अधिक है, यह विकास की गति भी है। –

+0

महान तर्क। – Zequez

4

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

3

फॉर्म हेल्पर्स विशेष रूप से उपयोगी हैं जो रेल मॉडल को आपके मॉडल के आधार पर फ़ॉर्म बनाने में मदद करते हैं।

निम्नलिखित कोड

<% form_for :person, @person, :url => { :action => "create" } do |f| %> 
    <%= f.text_field :first_name %> 
    <%= f.text_field :last_name %> 
    <%= submit_tag 'Create' %> 
<% end %> 

इस एचटीएमएल उत्पन्न

<form action="/persons/create" method="post"> 
    <input id="person_first_name" name="person[first_name]" size="30" type="text" /> 
    <input id="person_last_name" name="person[last_name]" size="30" type="text" /> 
    <input name="commit" type="submit" value="Create" /> 
</form> 

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

+0

निष्पादित करने के लिए धन्यवाद देना चाहिए। हालांकि, मैं जानना चाहता हूं कि प्रदर्शन सहायता से फॉर्म हेल्पर्स का उपयोग करना कितना बुरा है? – Chirantan

1

इसका अच्छा जब एक डेवलपर वर्ग, आईडी के लिए एक ही नाम और एक इनपुट क्षेत्र के लिए कोई मूल्य नहीं होने अगर वह अलग नाम आईडी की जरूरत है और यह भी मूल्य दे रही है तो वह <% = text_field_tag ​​"नाम" लिखने के लिए है, लगता है: मूल्य => "मान",: id => "id",: class => "" वर्ग%> और उसी HTML के लिए < इनपुट प्रकार = "टेक्स्ट" मान = "मान" वर्ग = "वर्ग" नाम = "नाम" id = "आईडी" /> अब लगता है कि भूमि के ऊपर 1. एचटीएमएल 2. में पहली सहायक का मूल्यांकन अब भी सहायक में है कि की लंबाई हम भी लिखने के लिए है पर विचार करें:, => 3। कभी-कभी आप इसका उपयोग करना भूल जाते हैं: या, गलती से इसलिए मुझे लगता है कि हम उस मामले में एचटीएमएल पसंद करते हैं और एक बात यह है कि यदि आपका सर्वर उससे बहुत अधिक अनुरोध प्राप्त कर रहा है तो बहुत व्यस्त हो जाएगा और प्रतिक्रिया समय बढ़ जाएगा क्योंकि <% =% >

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