2013-07-03 30 views
13

Có ai có thể đưa ra giải thích rõ ràng về cách provide() hoạt động trong chế độ xem không? Tôi đã đọc tài liệu chính thức nhưng những gì thực sự làm tôi bực mình là thế này, nếu tôi xác định vào đầu của một mẫusản lượng và cung cấp() bên trong mẫu

<% provide(:title, 'Help') %> 

và sau đó tôi có dòng mã này

<%= yield :title %> 

những gì thực sự xảy ra trong lý lịch ? Tôi biết rằng năng suất được cho là để gọi khối mã. Điều gì sẽ là khối mã trong bối cảnh này?

Trả lời

32

provide lưu trữ một khối đánh dấu trong số nhận dạng để sử dụng sau này. Trong trường hợp này, 'Trợ giúp' trong ký hiệu: tiêu đề. Cung cấp được đính kèm theo số <% %> để cho biết nó đang thực thi mã này và không in ra trong chế độ xem.

yield trong trường hợp này chỉ cần kích hoạt chặn lại. Sản lượng được đính kèm theo số <%= %> để cho biết nó đang được in ra ngoài chế độ xem.

Hãy suy nghĩ về nó như thiết lập một biến và in ra một biến.

Xem: http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method-i-provide để biết thêm thông tin. Lưu ý rằng provide thực sự là một trình bao bọc cho content_for vì vậy đó là nơi những thứ tốt có trong liên kết đó.

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