2011-10-21 24 views
29

Tôi thấy một số mã trong ứng dụng Rails v2.3.Đường ray: về năng suất

Trong layout/car_general.html.erb (quan điểm này được gọi bằng một phương pháp trong cars_controller), tôi thấy mã:

<body> 
    <%= yield %> 

    <%= javascript_include_tag 'jquery-1.4.2.min' %> 

    <% javascript_tag do %> 
     <%= yield :jstemplates %> 
      var some_car = new Object; 
     <%= yield :some_car %> 
    <% end -%> 
</body> 

Hai câu hỏi để hỏi:

  1. Tôi có thể tìm nội dung năng suất của Trường đầu tiên <% = lợi nhuận%> dưới <body>.
  2. Đây có phải là cách cụ thể của đường ray để bao gồm mã js trong chế độ xem bằng cách sử dụng <%= yield :jstemplates %> và khoảng <%= yield :some_car %>, có trỏ đến chế độ xem hoặc chỉ để hiển thị giá trị some_car không?

Trả lời

51

Nếu không có bất kỳ đối số nào, hiệu suất sẽ hiển thị mẫu của bộ điều khiển/tác vụ hiện tại. Vì vậy, nếu bạn đang ở trên trang cars/show, trang sẽ hiển thị views/cars/show.html.erb.

Khi bạn chuyển đối số lợi nhuận, đối số cho phép bạn xác định nội dung trong các mẫu mà bạn muốn hiển thị bên ngoài mẫu đó. Ví dụ, nếu trang cars/show của bạn có một html cụ thể đoạn mã mà bạn muốn làm ở chân, bạn có thể thêm dòng sau vào chương trình mẫu của bạn và car_general bố trí:

show.html.erb:

<% content_for :footer do %> 
    This content will show up in the footer section 
<% end %> 

layouts/car_general.html.erb

<%= yield :footer %> 

The Guide Rails có một phần tốt về việc sử dụng năng suất và content_for: 012.

Tài liệu API cho content_for cũng hữu ích và có một số ví dụ khác để làm theo. Lưu ý rằng nó cho Rails 3.1.1, nhưng chức năng này đã không thay đổi nhiều kể từ 2.3, nếu ở tất cả và vẫn nên áp dụng cho 3.0.x và 3.1.x.

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