2011-10-21 10 views
29

Vi un código en una aplicación Rails v2.3.Rieles: sobre rendimiento

En layout/car_general.html.erb (este punto de vista es llamado por un método en el cars_controller), vi el código:

<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> 

Dos preguntas que hacer:

  1. ¿Dónde puedo encontrar el contenido rendimiento de la primero <% = rendimiento%> bajo <body>.
  2. ¿Es una manera específica rieles para incluir código js en una vista mediante el uso de <%= yield :jstemplates %> y ¿qué pasa <%= yield :some_car %>, es que apunte a una vista o simplemente para mostrar el valor de some_car?

Respuesta

51

Sin argumentos, el rendimiento representará la plantilla del controlador/acción actual. Si está en la página cars/show, mostrará views/cars/show.html.erb.

Cuando pase producir un argumento, le permite definir el contenido de las plantillas que desea representar fuera de esa plantilla. Por ejemplo, si su página cars/show tiene un html específicos de fragmento que desea procesar en el pie de página, se puede añadir lo siguiente a su plantilla espectáculo y el diseño car_general:

show.html.erb:

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

diseños/car_general.html.erb

<%= yield :footer %> 

los carriles de guía tiene una buena sección sobre el uso de rendimiento y content_for: http://guides.rubyonrails.org/layouts_and_rendering.html#understanding-yield

La documentación de API para content_for es útil también y tiene algunos otros ejemplos a seguir. Tenga en cuenta que es para Rails 3.1.1, pero esta funcionalidad no ha cambiado mucho desde 2.3, si es que lo está, y aún debe aplicarse para 3.0.xy 3.1.x.

Cuestiones relacionadas