2013-01-18 10 views
5

कुछ स्टार्टर पाठ्यक्रमों की समीक्षा करते हुए, मुझे लगता है कि शब्द अलग से उपयोग किए जाते हैं, लेकिन मुझे लगता है कि मैं केवल लेआउट को समझता हूं। मेरे ज्ञान के लिए लेआउट कोड का अस्थायी हिस्सा है (जैसे कि सही नेविगेशन अनुभाग, एक विज्ञापन वाला एक div, या कुछ समान), और आंशिक आंशिक टेम्पलेट है, लेकिन टेम्पलेट क्या है, और यह कैसे भिन्न होता है एक लेआउट?रेल में टेम्पलेट, आंशिक, और लेआउट?

यदि आप संभव हो तो तीनों के साथ संबंधों के साथ तीनों की परिभाषा दे सकते हैं? (यानी एक टेम्पलेट है .... और वहाँ दो प्रकार, आंशिक और लेआउट .... लेआउट टेम्पलेट्स के विशिष्ट प्रकार के कर रहे हैं या जो कुछ भी जवाब है)

मेरी धारणा ठीक करें यदि आवश्यक हो तो ...

Railscasts 294 में पीजेएक्स का उपयोग करके, लेआउट यादृच्छिक संख्या जनरेटर द्वारा स्पष्ट रूप से विभेदित होते हैं, और यही कारण है कि मैं खो गया।

मैं ऐप/वर्ब/संज्ञा द्वारा एक्सेस किया गया एक पृष्ठ बनाने की कोशिश कर रहा हूं, जहां मैं या तो "कैप्चर" या "डिस्प्ले" "फोटो", "वीडियो", "इमेजेस" इत्यादि ... (ऐप/कैप्चर/फोटो या एप/कैप्चर/वीडियोज़ या एप/डिस्प्ले/फोटो इत्यादि) और जब मैं अलग-अलग चीजों को "कैप्चर करता हूं" के आधार पर केवल एक div परिवर्तन करने की कोशिश कर रहा हूं .... और मैं शब्दकोष में खो रहा हूं, या मैं वास्तव में करीब आ जाओ लेकिन वास्तव में समझ में नहीं आता कि मैं क्या कर रहा हूं।

उत्तर

2

http://www.tutorialspoint.com/ruby-on-rails/rails-layouts.htm से: एक लेआउट एक HTML पृष्ठ के परिवेश को परिभाषित करता है। यह आपके अंतिम आउटपुट के सामान्य रूप और अनुभव को परिभाषित करने का स्थान है। लेआउट फाइल ऐप/विचार/लेआउट में रहते हैं।

टेम्पलेट दृश्य फ़ाइलों के लिए एक सामान्य शब्द है। एक दृश्य टेम्पलेट - ऐप/दृश्य/फ़ोल्डर में रहने - एक लेआउट के भीतर प्रस्तुत किया जाएगा। कैसे समझ रेल विचारों काम पर लेआउट रेल गाइड पृष्ठ पर रूबी और प्रतिपादन करने के लिए

बेस्ट संसाधन: http://guides.rubyonrails.org/layouts_and_rendering.html

+0

तो लेआउट विशिष्ट प्रकार के टेम्पलेट्स हैं? यह 'लेआउट' को छोड़कर 'ऐप/व्यू /' में फ़ोल्डर्स की सभी चाइल्ड फाइलें टेम्पलेट करेगा? –

+0

यूप, लेआउट विशिष्ट प्रकार के टेम्पलेट्स हैं। कई लेआउट फाइलें हो सकती हैं; कौन सा लेआउट प्रदान किया जाता है नियंत्रकों में कॉन्फ़िगरेशन पर निर्भर है। एप्लिकेशन में उपयोग किए गए एक लेआउट 'ऐप/व्यू/लेआउट/application.html.erb' है। अन्य लेआउट को नियंत्रकों से स्पष्ट रूप से बुलाया जा सकता है। –

+0

और आप आंशिक रूप से परिभाषित कैसे करेंगे क्योंकि यह दूसरे दो से संबंधित है? –

14

मैं जानता हूँ कि यह एक पुराने सवाल है, लेकिन मैं एक ही सोच है। गाइड में, लेआउट और विचारों के बीच अंतर का कोई स्पष्ट स्पष्टीकरण नहीं है, न ही संबंधों का स्पष्ट स्पष्टीकरण है। भ्रम में जोड़ने के लिए, 'टेम्पलेट' शब्द का प्रयोग अक्सर दोनों के लिए किया जाता है। किसी को उस 90 के दशक में स्मालटाक प्रोग्रामिंग की गई थी (लेकिन रेल के लिए नया है) मैं गहराई से MVC को समझते हैं और कई मायनों है कि यह एक कार्यान्वित किया जा के कुछ समझ में के रूप में - तो मेरे भ्रम की स्थिति है कि भाग के साथ नहीं था। विचारों, लेआउट, और टेम्पलेट्स और वे एक-दूसरे से कैसे संबंधित हैं, के संदर्भ में केवल एक लापता टुकड़ा है। एक सरलीकृत समझ और उदाहरण के साथ

प्रारंभ ताकि संबंध और प्रत्येक भाग की भूमिका स्पष्ट है::

यहाँ कैसे मैं इसे समझने के लिए आया है

  • एक दृश्य है 'सामान 'एक विशेष नियंत्रक एक कार्रवाई (यह एक विशेष स्थिति में डालता है) के लिए प्रतिक्रिया करने के लिए प्रदर्शित किया जाएगा। एक दृश्य एक विशेष स्थिति में पर अपने मॉडल का एक स्नैपशॉट, किसी विशेष कार्रवाई (कारण/संदर्भ) के लिए है। यह जानकारी और राज्य के बारे में है, जरूरी नहीं कि 'अच्छा लग रहा है'।
  • लेआउट पर पर विशिष्ट जानकारी है कुछ प्रदर्शित किया जाएगा। यह मार्कअप (सीएसएस, एचटीएमएल, आदि) कैसे कुछ यहां (इस भाग का आयोजन ऊपर हो जाएगा के निर्देश प्रदान करता है कि, वहाँ पर वह हिस्सा हो सकता है, उन नीचे, शीर्ष पर इन नाव पर जाओ, कि नेविगेशन जानकारी है, यह एच 1 है, वह एच 3 है, यह एक परिभाषा है ..) और यह कैसा दिखेगा (बाएं, दाएं, ऊपर, नीचे, लाल, हरे, पर बल दिया, चमकती, छिपे हुए, बड़े, छोटे, Helvetica, आदि) सोचो "एल ayout और एल अच्छा ooking"

आप एक अनुबंध मॉडल और नियंत्रक है कहो, और आप एक फ़ाइल दृश्य से तय होता है: view/contracts/show.htm.erb:

<% content_for :full_identification do %> 
     <p><%= contract.display_name %> <%=contract.full_id_number %> </p> 
    <% end %> 

    <% content_for :summary do %> 
     <p> This is the summary for <%= contract.simple_name %>. You hire us. We give you coolness. You pay us.</p> 
    <% end %> 

    <% content_for :client_info do %> 
    <div class="client-info"> 
     <p><span class="contract-title">Client: <%= contract.client_name%></span></p> 
     <p>Address: <%= contract.client_address%></p> 
     <p>Phone: <%= contract.client_phone %> </p> 
     ... more info about the client.... 
    </div> 
    <% end %> 

    <% content_for :scope_of_work_statement do %> 
    <p class="scope-of-work-statement"><%= contract.scope_of_work%>:</p> 
    <% end %> 

आपका लेआउट फ़ाइल HTML के बारे में अधिक जानकारी के लिए होता है (HTML आउटपुट कल्पना करते हुए) और आप चीजों को कैसे देखना चाहते हैं इसके बारे में विशिष्टताएं। हो सकता है कि आपके पास एक नियंत्रक हो और देखें कि क्लाइंट उस अनुबंध को किस (और कैसे) देखता है। आप किसी विशिष्ट नियंत्रक के लिए एक लेआउट फ़ाइल है और यह इस तरह दिखता है: layouts/contracts/contracts_clients_view.htm.erb

<div class="tab-pane fade in" > 
    <div class="span7 highlight > 
     <%= yield :full_identification %> 
     <div class="no-breaks reflow" > 
     <%= yield :summary%> 
     </div> 
    </div> 

    <div class="span5 scope-of-work-statement"> 
     <h3>Scope of Work Statement</h3> 
     <%= yield :scope_of_work_statement %> 
     </div> 
    </div> 
</div> 

* [यह एक पूरी तरह से काल्पनिक उदाहरण ताकि मैं देख सकते हैं और लेआउट स्पष्ट के बीच संबंध बना सकते हैं। जाहिर है चीजों को वास्तविक दुनिया में मॉडलिंग और व्यक्त किया जाएगा। ] *

देखें लेआउट में इनपुट (सामग्री टुकड़े) प्रदान करता है। विचार नियंत्रक कार्यों के लिए हैं और तदनुसार नामित हैं। (पूर्व: शो, एडिट, इंडेक्स इत्यादि)

लेआउट उन्हें प्रस्तुत करने के लिए प्रयुक्त नियंत्रक के लिए नामित हैं। (उदाहरण: आवेदन - एक ContractController, contract_customers_view के लिए - - ApplicationController, अनुबंध के लिए एक ContractCustomersViewController के लिए)

यह कहाँ उलझ पाने के लिए शुरू होता है कि एक दृश्य भी लेआउट जानकारी में हो सकती है यह। कभी-कभी केवल दृश्य फ़ाइल होती है (कोई लेआउट फ़ाइल नहीं)। और या तो टेम्पलेट भाषा (जैसे ईआरबी या एचएएमएल) में लिखा जा सकता है और इस प्रकार वे दोनों को टेम्पलेट के रूप में संदर्भित किया जा सकता है।

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

एक और जगह है जहाँ आप विचारों और लेआउट और कैसे वे अलग हैं (प्रवाह) चरणों में है के बारे में कुछ संदर्भ कि ActionView के माध्यम से करने के लिए वास्तव में उत्पादन का उत्पादन हो जाता है प्राप्त कर सकते हैं - इन सभी टुकड़ों का उपयोग करके कुछ प्रस्तुत करने के लिए। यह समझना महत्वपूर्ण है कि जब कोई लेआउट बनाया गया है (या नहीं), उदाहरण के लिए, तो आप समझते हैं कि कौन से चर और पैरामीटर किसी विशेष समय पर आपके लिए उपलब्ध हैं या नहीं। (मैं रेल 4 के साथ काम कर रहा हूँ, btw।)

है, उन सभी को देखते हुए, अब मान लें कि आपकी लेआउट जानकारी के सभी अपने विचारों में है, और है कि अपने विचारों को एक टेम्पलेट भाषा में बनाई गई (ERB, एचएएमएल, इत्यादि), और आपने सब कुछ बेहतर बनाने के लिए आंशिक उपयोग किया है।आपके पास आपके आवेदन के लिए एक मुख्य से अधिक कोई लेआउट फाइल नहीं हो सकती है जिसमें एक बड़ा yield है जहां वास्तविक सामग्री (आपके नियंत्रकों द्वारा उत्पन्न & मॉडल) चला जाता है।

आशा है कि इससे किसी और को विचारों और लेआउट पर एक संभाल प्राप्त करने में मदद मिलेगी। (और मुझे लगता है कि मुझे गाइड में इस तरह कुछ डालने का सुझाव देना चाहिए।)

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