मैं एक विषमता में आया हूं कि मैं रेल 3 के संबंध में काफी व्याख्या नहीं कर सकता और लेआउट (नियंत्रक से) के साथ आंशिक प्रतिपादन नहीं कर सकता। मुझे उम्मीद है कि कोई क्या हो रहा है में थोड़ा अंतर्दृष्टि प्रदान कर सकता है।रेल 3 बनाम 2.3.5 के साथ विषमताएं प्रस्तुत करें: आंशिक और: लेआउट
सबसे पहले, हम इस नियंत्रक को "विरासत" नियंत्रक कहते हैं। यह काफी समय से आसपास रहा है और बहुत सी चीजें गलत कर रही है, लेकिन मैं इस बिंदु पर इसे फिर से समझने की कोशिश नहीं कर रहा हूं इसलिए मैं जो कुछ भी करता हूं उसके साथ काम करने के तरीकों को ढूंढने की कोशिश कर रहा हूं।
new
कार्रवाई कुछ इस तरह (BarsController
में)
def new
if something
render :partial => "foo", :layout => "bars"
elsif something_else
render :partial => "foo2", :layout => "bars"
elsif something_else_else
render :partial => "foo3", :layout => "bars"
else
render :partial => "foo4", :layout => "bars"
end
अब, रेल 2.3.5 में है, यह ठीक काम किया। यह उचित लेआउट के अंदर उचित आंशिक प्रस्तुत करेगा - मुझे एहसास है कि लेआउट विकल्प अनावश्यक है क्योंकि यह बिना किसी लेआउट लेआउट के लिए डिफ़ॉल्ट होगा। जब हम 3.0.x रेल करने के लिए उन्नत, हम इस प्रकार की त्रुटियों हो रही शुरू कर दिया:
Missing partial layouts/bars with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>[:html]
जाहिर layouts/bars.html.erb
फ़ाइल है और हमेशा किया गया है, तो मैं यह समझ नहीं सकता है। मैं :layout => false
के साथ प्रस्तुत करने में सक्षम था, लेकिन यह निश्चित रूप से काम नहीं करेगा। आखिरकार मैं पता लगा कि अगर मैं निम्न में से कोई एक कार्य करें, यह काम करता है:
1) bars.html.erb
के बजाय _bars.html.erb
करने के लिए अपने लेआउट का नाम बदलें और:
render :partial => 'foo2', :layout => 'bars'
2) bars.html.erb
के रूप में मेरे लेआउट रखें (क्या मैं चाहता हूँ) और:
render '_foo2' # :partial option is redundant here anyway
ऐसा लगता है कि स्ट्रिंग के बजाय आंशिक विकल्प का उपयोग करके पहले पैरामीटर के रूप में _name.html.erb
दोनों partial
और layout
पर रेलवे लागू करने का कारण बन रहा है। अगर मैं अंडरस्कोर को अपने आप में डालता हूं, तो यह उस व्यवहार के लिए वापस आ जाता है जिसकी मुझे उम्मीद है कि लेआउट के नाम के नीचे _
प्रीपेड नहीं करना है।
क्या कोई जानता है कि ऐसा क्यों है?
संपादित ठीक है, यकीन नहीं है कि कैसे मैं इस याद किया ... लेकिन यहाँ इस का उल्लेख कर रही डॉक्स में कुछ। ऐसा लगता है कि यह 2.3.8 के आसपास रहा है, शायद यह 2.3.5 में अलग किया गया था (हम क्या चल रहे थे)?
3.4.3 आंशिक लेआउट
एक आंशिक अपनी ही लेआउट फ़ाइल का उपयोग कर सकते हैं, बस के रूप में एक दृश्य के एक लेआउट का उपयोग कर सकते हैं।
<% = प्रस्तुत करना "link_area",: लेआउट => "graybar"%> यह एक आंशिक नामित _link_area.html.erb के लिए देखने के लिए और का उपयोग कर इसे प्रस्तुत करना होगा उदाहरण के लिए, अगर आप इस तरह एक आंशिक कॉल कर सकते हैं लेआउट _graybar.html.erb।ध्यान दें कि आंशिक के लिए लेआउट एक ही नियमित आंशिक के रूप में अग्रणी-अंडरस्कोर नामकरण का पालन करते हैं, और उसी आंशिक भाग में रखे गए हैं जो वे संबंधित हैं (मास्टर लेआउट फ़ोल्डर में नहीं)।
यदि आप आंशिक रूप से पैरामीटर पास करते हैं, तो ऑब्जेक्ट या स्थानीय लोगों के लिए टेम्पलेट्स के साथ काम नहीं करते हैं, तो इसके लिए अधिक कोड मोड की आवश्यकता होगी। काश वे व्यवहार को नहीं बदला था ... – farhadf