2012-03-23 25 views

Trả lời

6

Có thể là do bạo lực?

header_partial = ERB.new(File.new("header_partial.erb").read).result(binding) 
footer_partial = ERB.new(File.new("footer_partial.erb").read).result(binding) 

template = ERB.new <<-EOF 
    <%= header_partial %> 
    Body content... 
    <%= footer_partial %> 
EOF 
puts template.result(binding) 
+0

Cảm ơn! Thats chính xác những gì tôi đã đưa ra là tốt;) – bluegray

+0

Có một số đá quý có thể giúp với điều đó? – Kirby

1

Được cố gắng tìm ra điều tương tự và không tìm thấy nhiều mà đã được đáp ứng khác vì sử dụng Tilt gem, mà kết thúc tốt đẹp ERB và hệ thống khuôn mẫu khác và hỗ trợ thông qua các khối (aka, kết quả của một riêng biệt làm gọi) có thể đẹp hơn một chút.

Nhìn vào lúc: https://code.tutsplus.com/tutorials/ruby-for-newbies-the-tilt-gem--net-20027

layout.erb

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8" /> 
    <title><%= title %></title> 
</head> 
<body> 
    <%= yield %> 
</body> 
</html> 

Sau đó, trong cuộc gọi ruby ​​của bạn

template = Tilt::ERBTemplate.new("layout.erb") 

File.open "other_template.html" do |file| 
    file.write template.render(context) { 
     Tilt::ERBTemplate.new("other_template.erb").render 
    } 
end 

Nó sẽ áp dụng các kết quả của other_template vào cơ thể yield.

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