2010-12-12 7 views
15

में लेआउट टेम्पलेट का ढांचा मेरे पास एक वेब पेज है जो लेआउट के लिए हैमल का उपयोग करता है। एक अलग लेआउट फ़ाइल (layout.haml) है जिसका प्रयोग किसी भी वास्तविक हैमल पेज को प्रस्तुत करते समय किया जाता है। layout.hamlहैम

-# layout.haml 
!!! XML 
!!! 
%html 
    %head 
    ... 
    %body 
    ... 
    #content= yield 

समस्या तरह दिखता है: इस दस्तावेज़ के <body> शीर्षक में तो जोड़ तोड़ बातों में पहले से ही निश्चित रूप से है सीधे संभव नहीं है। उदाहरण के लिए <title>@title के माध्यम से बदला जाता है। किसी समस्या का कुछ और तथ्य यह है कि प्रत्येक पृष्ठ विशिष्ट जावास्क्रिप्ट को शरीर में लोड करने की आवश्यकता होती है। इसके अलावा layout.haml में पहले से ही जावास्क्रिप्ट है, इसलिए jQuery आमतौर पर कई बार तत्काल होता है।

बेहतर टेम्पलेट संरचना के लिए कोई सुझाव?

!!! 
%html 
    = partial('trst_sys/shared/html-head') 

    %body{:id => "srv",:'data-lang' => current_lang} 
    #main.wrap 
    %header#header 
     = partial('trst_sys/shared/header') 
    %nav#menu 
     = partial('trst_sys/shared/menu') 
    %section#content 
     %article#xhr_content 
     = yield 
     %article#xhr_msg.hidden 
    %section#sidebar 
     = partial('trst_sys/shared/sidebar') 
    %section#main_footer.wrap 
    %footer#footer.wrap 
    = partial('trst_sys/shared/footer') 
+0

एक Haml केवल ऐप्लिकेशन के लिए, आंशिक और लेआउट के साथ, तो आप इस जवाब की जांच होनी चाहिए: https://stackoverflow.com/questions/6125265/उपयोग-लेआउट-इन-हैमल-फाइल-स्वतंत्र रूप से रेल –

उत्तर

43

यह समाधान रूबी पर केवल रेल के लिए है:

आप yield(:location) और content_for(:location) तरीकों, more information उपयोग कर सकते हैं

+0

हाय धन्यवाद, यह काफी सुरुचिपूर्ण दिखता है, मैं जल्द ही कोशिश करूंगा कि – Philip

+15

ध्यान दें कि यह एक रेल है विशिष्ट समाधान। –

6

मैं partials का उपयोग करें।

layout.haml

!!! 
%html 
    %head 
    %title= yield(:title) 
    = yield(:head) 
    %body 
    = yield 

view.haml

- content_for(:title, 'My title') 
- content_for(:head) do 
    = javascript_include_tag :foo 

%h1 My view! 
+0

धन्यवाद, मैं निश्चित रूप से जल्द ही इसे देखता हूं – Philip

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