Hay dos maneras que utilizo:
Para pequeños scripts, triviales que se acaba de añadir un poco de ojos dulces, a menudo me incluyo en línea en la plantilla que modifican (al igual que usted ha mostrado) , porque es más fácil para mí hacer un seguimiento de esta manera.
Para cualquier cosa que sea más de una o dos pequeñas líneas lo guardo discreto, pero cargarlo utilizando content_for
Mi diseño de la aplicación es el siguiente (en HAML):
= javascript_include_tag 'jquery.144.min','rails','jquery.tools','application'
= yield :scripts
La parte importante es yield :scripts
. Luego, en una página en la que necesito algo de JavaScript que hago:
- content_for :scripts do
= javascript_include_tag 'photo_form'
Esto carga el código JavaScript en el encabezado, pero sólo si se muestra la plantilla dada. content_for
envía cosas al método yield
con el nombre correspondiente.
Puede pegar un bloque de rendimiento como ese en cualquier lugar - También tengo uno justo antes de la etiqueta de cuerpo de cierre. El rendimiento/content_for es realmente útil.
Nota: como señaló tadman en los comentarios, cualquier cosa que no tenga que cargarse en la cabeza debe cargarse al final de la página.
Una última cosa a tener en cuenta, si tienes algo más complejo también puedes usar variables de instancia entre tus plantillas y la vista de tu aplicación. Por ejemplo, tengo una barra de menú en mi aplicación que está en el diseño de la aplicación. Por lo tanto, a veces quiero activar un botón específico del contexto o una fila adicional de botones solo en ciertas páginas.
En mi diseño de la aplicación que llamo un parcial que hace que el menú, el código de menú se parece a:
#menubar (normal menu stuff)
- if @special_menu
#special_menu
Por lo tanto, a continuación, en cualquier plantilla que puede hacer:
- @special_menu = true
... y para esa página aparecerá el menú dado. También puede hacer esto en acciones de controlador, tengo un controlador donde agregué un filtro anterior que establece uno de los indicadores de menú en verdadero. Podrías hacer lo mismo con cualquier conjunto complejo de cosas de JavaScript que quieras incluir condicionalmente.
mayoría de estas ideas que recibí de ver este Railscast: http://railscasts.com/episodes/30-pretty-page-title
debería echar un vistazo!
Cuando dice "grande muy rápido", es posible que exagere. 20-30 KB de JavaScript es mucho, pero no es "grande" porque se puede enviar al navegador comprimido a aproximadamente 3 KB y se almacenará en caché entre las solicitudes si el servidor está configurado correctamente. Solo las bibliotecas más grandes como jQuery-UI o Google Maps deberían preocuparle, y no cargarlas en páginas que no las usan puede ayudar. – tadman