2012-07-12 13 views
12

Quiero incluir algunas funciones de Javascript en una vista de Haml, pero no quiero que se inserte en todas las vistas. ¿Tengo que poner el archivo Javascript en javascripts públicos o puedo ponerlo en la aplicación/assets/javascripts para mantenerlo oculto para el usuario, y seguir haciendo referencia desde el archivo de vista de haml?¿Cómo se importa un archivo Javascript en una vista Haml?

¿Cómo harías ambas opciones si fuera posible?

Respuesta

26

Usted sólo debe utilizar

!!! 
%html 
    %head 
    = javascript_include_tag "my_js_file" 

si es específico para un solo lugar, se debe utilizar content_for

!!! 
%html 
    %head 
    = yield(:javascripts) 

Y a continuación, en su opinión

- content_for :javascripts do 
    = javascript_include_tag "my_js_file" 
+0

¡Eso funcionó! ¡Muchas gracias! –

8

incluir directamente los

Si desea que el javascript incluidos directamente en el haml, puede utilizar :javascript

:javascript 
    $(function() { alert("js inside haml"); } 

Usted puede poner esto en un parcial y luego simplemente hacer que el parcial para mantener sus puntos de vista limpia.

Referencia Se

Si desea simplemente hacer referencia a javascript y que el navegador tire de ella en, usted debe utilizar javascript_include_tag como siempre. Aquí, deberá hacer que el archivo javascript sea manifiesto, en lugar de requerirlo en el manifiesto application.js. Recuerde agregar el manifiesto a config.assets.precompile en su application.rb, según http://guides.rubyonrails.org/asset_pipeline.html

(en su haml):

= javascript_include_tag 'somefile' 

(en config/application.rb):

config.assets.precompile += ['somefile.js'] 
+0

Esto también es muy útil, gracias por tomarse el tiempo para responder. –

+0

¿Es esta la más moderna de las dos soluciones? Dijiste la frase 'canalización de activos', así que me conmovió pensar que sí. – Ziggy

+0

@Ziggy, la otra solución también proporciona una forma de incluir ciertos archivos javascript (en el encabezado) modificando la plantilla. –

0

Si su javascript es pequeño y simple, sugiero incluir javascript directamente en el HAML:

:javascript 
    alert('hi hi!') 

De lo contrario, debe usar la canalización de activos. Se asegura de que sus javascripts sean pre-processed, compressed and minified. También ayuda a mantener sus javascripts bien organizados (por ejemplo, separación entre sus scripts y scripts de proveedores) y fácilmente comprobables (con marcos de prueba como jasmine/jasminerice/evergreen). Si es nuevo en el inventario de activos, here es una buena lectura =)

Cuestiones relacionadas