2009-04-12 28 views
12

Tôi mới làm quen với đường ray và đang cố gắng tìm ra cách để bố cục lồng nhau hoạt động; Tôi giả sử họ giống như một trang chủ .net?Bố cục lồng nhau trong ruby ​​trên đường ray

Tôi đã theo this guide và tôi đã tạo ra một application.erb.html trong thư mục bố trí của tôi, trong đó có này:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <meta http-equiv="content-type" content="text/html;charset=UTF-8" /> 
    <title><%= @page_title or 'Page Title' %></title> 
    <%= stylesheet_link_tag 'layout' %> 
    <style type="text/css"><%= yield :stylesheets %></style> 
</head> 
<body> 

<%= yield(:content) or yield %> 

</body> 
</html> 

và đã sửa đổi một trong bố trí hiện tại của tôi như thế này:

<% content_for :stylesheets do %> 

<% end -%> 

<% content_for :content do %> 
    <p style="color: green"><%= flash[:notice] %></p> 
    <%= yield %> 
<% end -%> 

<% render :file => 'layouts/application' %> 

Khi tôi truy cập một trong các chế độ xem của mình trong trình duyệt, hoàn toàn không có gì được hiển thị; khi tôi xem nguồn không có html.

Tôi chắc rằng có điều gì đó tiểu học tôi đã bỏ lỡ, bất cứ ai có thể chỉ ra nó xin vui lòng ?!

+0

Bản sao có thể có của [Bố cục lồng nhau nhiều cấp trong Rails 3] (http://stackoverflow.com/questions/6539239/multiple-level-nested-layout-in-rails-3) –

Trả lời

29

Tôi đã làm việc ra các giải pháp, mặc dù nó không phải là những gì được đưa ra trong this article

tôi đã thay thế dòng này

<% render :file => 'layouts/application' %> 

với

<%= render :file => 'layouts/application' %> 

Tôi không chắc chắn nếu bài viết sai, hoặc tôi đã tìm ra cách sai để sửa nó! Làm ơn cho tôi biết!

Chúc mừng

+0

đã trao cho bạn một phiếu bầu vì điều này đã được giải cứu tôi từ cùng một sự nhầm lẫn. – gabe

+0

+1, tôi cũng bối rối. – dfrankow

+0

tương tự; cảm ơn. đã hơn một năm và lỗi trong hướng dẫn vẫn tồn tại. : | – unsorted

4

Bài viết gốc có lỗi và giải pháp của bạn là chính xác. Đây là lý do:

Đầu ra của mã ruby ​​trong ERB (chế độ xem) được bọc trong <% =%> được thêm vào HTML được tạo và gửi đến trình duyệt. Đầu ra của mã ruby ​​được mã hóa trong <%%> không được thêm vào HTML. Vì vậy, gọi <% hiển thị: một phần ...%> không có hiệu lực vì kết quả của mã ruby ​​đó (tìm nạp một phần) không được thêm vào tệp HTML được tạo.

<%%> thường được dành riêng cho các điều kiện và vòng lặp, như bạn có trong ví dụ ở trên.

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