2011-10-21 10 views
29

मैंने रेल कुछ v2.3 ऐप में कुछ कोड देखा।रेल: उपज के बारे में

layout/car_general.html.erb में (इस दृष्टिकोण cars_controller में एक विधि द्वारा कहा जाता है), मैं कोड देखा:

<body> 
    <%= yield %> 

    <%= javascript_include_tag 'jquery-1.4.2.min' %> 

    <% javascript_tag do %> 
     <%= yield :jstemplates %> 
      var some_car = new Object; 
     <%= yield :some_car %> 
    <% end -%> 
</body> 

दो सवाल पूछने के लिए:

  1. मैं की उपज सामग्री कहां मिल सकती है पहले <% = उपज%><body> के तहत।
  2. क्या यह <%= yield :jstemplates %> और <%= yield :some_car %> का उपयोग करके जेएस कोड को देखने के लिए एक रेल विशिष्ट तरीका है, क्या यह किसी दृश्य को इंगित करता है या केवल some_car का मान दिखाने के लिए?

उत्तर

51

किसी भी तर्क के बिना, उपज वर्तमान नियंत्रक/कार्रवाई का टेम्पलेट प्रस्तुत करेगा। तो यदि आप cars/show पृष्ठ पर हैं, तो यह views/cars/show.html.erb प्रस्तुत करेगा।

जब आप उपज उत्पन्न करते हैं, तो यह आपको अपने टेम्पलेट्स में सामग्री को परिभाषित करने देता है जिसे आप उस टेम्पलेट के बाहर प्रस्तुत करना चाहते हैं। उदाहरण के लिए, यदि आपके cars/show पेज एक विशिष्ट HTML स्निपेट कि आप पाद लेख में प्रस्तुत करना चाहते हैं, तो आपको निम्न अपने शो टेम्पलेट के लिए और जोड़ सकता है car_general लेआउट:

show.html.erb:

<% content_for :footer do %> 
    This content will show up in the footer section 
<% end %> 

लेआउट/car_general.html.erb

<%= yield :footer %> 

रेल गाइड उपज और content_for का उपयोग करने पर एक अच्छा अनुभाग है: 012,

content_for के लिए एपीआई दस्तावेज भी उपयोगी है और इसके कुछ अन्य उदाहरण हैं। ध्यान दें कि यह रेल 3.1.1 के लिए है, लेकिन 2.3 के बाद से यह कार्यक्षमता बहुत अधिक नहीं बदली है, अगर बिल्कुल और 3.0.x और 3.1.x के लिए अभी भी आवेदन करना चाहिए।

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