2009-08-15 21 views
8

मैं तरल लेआउट (तरल टेम्पलेट लैंग, सीएसएस तरल लेआउट सामान नहीं) के भीतर एक तरल टेम्पलेट प्रस्तुत करने की कोशिश कर रहा हूं। मुझे प्रस्तुत करने के लिए लेआउट भाग नहीं मिल रहा है। वर्तमान में उपयोग:तरल टेम्पलेट भाषा का उपयोग कर लेआउट के भीतर आप टेम्पलेट कैसे प्रस्तुत कर सकते हैं?

assigns = {'page_name' => 'test'} 
@layout = Liquid::Template.parse(File.new(@theme.layout.path).read) 
@template = Liquid::Template.parse(File.new(self.template.path).read) 

@rend_temp = @template.render(assigns) 
@rend_layout = @layout.render({'content_for_layout' => @rend_temp}) 

render :text => @rend_layout, :content_type => :html 

पेज के परिणामस्वरूप एचटीएमएल पता चलता है कि 'खाका' तरल ठीक में प्रदान की गई है, लेकिन यह लेआउट के साथ लिपटे नहीं है (प्रदान की गई टेम्पलेट के साथ लेआउट में 'content_for_layout' की जगह)

उत्तर

7

किसी और को यह जानने के लिए कि इस समस्या में कौन आता है, ऊपर पोस्ट किया गया कोड वास्तव में काम करता है, यह मुद्दा @ टेम्पलेट नामक चर के साथ है। मैंने @ टेम्पलेट का नाम बदल दिया, और @layout से @_tempalte, और @_layout और सब कुछ अपेक्षित काम करता है।

+0

हाँ के लिए तरल बूंदों जोड़ा है, लेकिन वहाँ टेम्पलेट लुकअप और अन्य उपहार आप रेल कि आप ऊपर कोड के साथ छोड़ से विरासत में से कुछ अपहरण है। हालांकि यह काम करता है, यह शैली या कार्यक्षमता में बिल्कुल "रेल-आश" नहीं है। – Dan

2
तरल माणिक में रेल (विशेष रूप से 3 रेल) ​​पर उपयोग करने के लिए

- मेरा मानना ​​है कि अपने तरल टेम्पलेट्स प्रस्तुत करना (और यह भी सभी काम रेल आप के लिए क्या कर रही है बनाए रखने के) इस प्रकार है उचित तरीके से ...

तरल मणि स्वयं रेल के लिए तरल_दृश्य प्रदान करता है ताकि जब आप # रेन्डर को कॉल करते हैं तो आप "तरल" टेम्पलेट्स को देखने के लिए रेल को तार कर सकते हैं। यह liquid_view केवल रेल 2.3 साथ पूरी तरह से काम करता है लेकिन आसानी से निम्नलिखित अद्यतन

if content_for_layout = @view.instance_variable_get("@content_for_layout") 
    assigns['content_for_layout'] = content_for_layout 
elsif @view.content_for?(:layout) 
    assigns["content_for_layout"] = @view.content_for(:layout) 
end 
assigns.merge!(local_assigns.stringify_keys) 

यह यहां देखा जा सकता बनाकर रेल 3 के साथ काम करने के लिए अद्यतन किया जा सकता है ->https://github.com/danshultz/liquid/commit/e27b5fcd174f4b3916a73b9866e44ac0a012b182

फिर

ठीक से अपने तरल प्रस्तुत करना दृश्य सिर्फ

render :template => "index", :layout => "my_layout", :locals => { liquid_drop1 => drop, liquid_drop2 => drop } 

फोन हमारे आवेदन में, क्योंकि हम आम तरल विशेषताओं में से एक मुट्ठी भर है हम अपने आधार नियंत्रक में "प्रस्तुत करना" विधि ओवरराइड, उन्हें अपने आप r द्वारा डिफ़ॉल्ट स्थानीय लोगों को शामिल करने के eferencing #liquid_view_assigns जो रोल अतिरिक्त प्रस्तुत करना कॉल

def render(...) 
    options[:locals] = options.fetch(:locals, {}).merge(liquid_view_assigns) 
    super 
end 
संबंधित मुद्दे

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