2010-12-12 39 views
15

Tôi có trang web sử dụng Haml cho bố cục. Có một tệp bố cục riêng biệt (layout.haml) được sử dụng khi hiển thị bất kỳ trang haml thực tế nào. Các layout.haml trông giống nhưCấu trúc mẫu bố cục trong Haml

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

Vấn đề: Đây là khóa học đã có trong <body> điều nên thao tác của tài liệu trong tiêu đề là không trực tiếp càng tốt. Ví dụ: <title> được thay đổi qua @title. Điều gì là nhiều hơn của một vấn đề là một thực tế rằng mỗi trang Javascript cụ thể cần phải được nạp trong cơ thể. Hơn nữa layout.haml đã chứa Javascript, vì vậy jQuery thường được khởi tạo nhiều lần.

Bất kỳ đề xuất nào cho cấu trúc mẫu tốt hơn?

+0

Đối với một ứng dụng HAML chỉ, với partials và bố trí, bạn nên kiểm tra câu trả lời này: https://stackoverflow.com/questions/6125265/sử dụng bố trí-trong-haml-files-độc lập-of-ray –

Trả lời

43

Giải pháp này là dành cho Ruby on Rails chỉ:

Bạn có thể sử dụng yield(:location)content_for(:location) phương pháp, more information.

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

Xin cảm ơn, điều này có vẻ khá thanh lịch, tôi sẽ cố gắng sớm – Philip

+15

Lưu ý rằng đây là một Rails giải pháp cụ thể. –

6

tôi sử dụng partials:

!!! 
%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

Cảm ơn, tôi chắc chắn sẽ kiểm tra xem ra sớm quá – Philip

Các vấn đề liên quan