2010-01-08 24 views
11

Tôi nghĩ rằng điều này đã được hỏi trước nhưng mặc dù tôi đã tìm kiếm trên Google nhưng tôi chưa đưa ra giải pháp.Đường ray: sử dụng "content_for" sau "tương ứng" bên trong bố cục

Vì vậy, đây là những gì tôi đang cố gắng để làm trong Rails 2.3.5:

layouts/application.html.erb: 
<html> 
    <head> 
    ... some other stuff 
    <%= yield :head %> 
    </head> 
    <body> 
    <% content_for :head, "something that belongs in the head" %> 
    </body> 
</html> 

Thông báo sản lượng trước các content_for.

Tôi biết rằng Rails - theo mặc định - không cho phép nội dung: đầu được xác định sau khi sử dụng năng suất - có ý nghĩa.

Tôi thậm chí đã thử hooking vào quá trình tạo mẫu nhưng không thành công cho đến nay.

Vì vậy, mục tiêu của tôi là để có thể xác định content_for bên trong partials/mẫu và có "lợi nhuận" bằng cách nào đó bị trì hoãn và thực hiện ngay trước khi phản ứng được gửi đến trình duyệt.

Có ai đó đưa ra giải pháp không?

Chúc mừng và cảm ơn, Frank

Cập nhật Tôi sẽ đi với ý tưởng weppos và cố gắng bản thân mình lên giá middleware. thanks

Trả lời

13

Quá trình hiển thị đầu tiên tải và thực thi mẫu hành động, sau đó trang trí mẫu với bố cục đã chọn. Bố cục được hiển thị từ đầu đến botton, do đó bạn không thể thêm nhiều nội dung hơn vào :head sau khi :head đã được hiển thị.

Bạn cần thay đổi chiến lược của mình. Hoặc đặt mảnh trong một phần và đính kèm nó vào khung nhìn hành động của bạn hoặc sử dụng chiến lược hậu xử lý như mô-đun Rack/after_filter để thay đổi mã html trực tiếp.

Tôi có thể cố gắng tìm một giải pháp tốt hơn dựa trên những gì tôi thực sự cần. Nếu bạn đang gặp phải vấn đề này, rất có thể là lỗi ở một nơi khác, có lẽ trong kiến ​​trúc ứng dụng.

7

Không được có dấu bằng trong câu kê content_for của bạn. Nó phải là:

<% content_for :head, "Something that belongs in the head" %> 

Nếu bạn xác định nội dung trong các mẫu và partials của bạn thì nó sẽ hoạt động. Kỹ thuật này được bao gồm trong Railscast episode 8.

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