2012-09-21 23 views
7

Quiero usar una biblioteca de JavaScript, como un complemento jQuery. ¿Utilizo la canalización de activos de Rails? ¿O debería incluirlo con javascript_include_tag? ¿Cuáles son mis opciones y cuál es la práctica recomendada?Rieles: incluya JavaScript externo

Respuesta

24

¿Utilizará la biblioteca de JavaScript en solo unas pocas páginas o en toda la aplicación? Si va a utilizarlo en toda la aplicación, use la cartera de activos agregándolo a la carpeta proveedor/assets/javascripts. Si planea utilizar la biblioteca en una sola página, use el javascript_include_tag.

Estas son reglas generales para guiar el uso de JavaScript en rieles:

  • Lógicamente organizar las secuencias de comandos a nivel de sitio en el/los activos/javascript/carpeta aplicación. bibliotecas

  • Copiar datos externos de JavaScript (como jQuery plugins) al vendedor/activos/javascript carpeta.

  • Lista de scripts en todo el sitio en el aplicación/assets/javascripts/application.js manifiesto.

  • Deje que la tubería de activos Rails los combine en un solo archivo minimizado application.js.

  • Para las secuencias de comandos que se utilizan en unas pocas páginas que tienen pocas visitas, cargue como JavaScript específico de la página.

  • Ponga el JavaScript específico de la página en la carpeta lib/assets/javascripts.

Para específica de la página JavaScript, utilice <%= yield(:head) %> en el diseño de la aplicación y <% content_for :head ... %> en la vista.

Para una explicación completa con todos los detalles, véase mi artículo:

Including External JavaScript Files in Rails

+1

js específicos de la página deben ir en la aplicación/assets /, organizados con la misma estructura de directorios que sus vistas. lib/es nominalmente para activos compartidos entre aplicaciones – klochner

2

Para el acceso de JavaScript en un solo archivo, javascript_include_tag es la mejor opción.

Con eso lo que puedes hacer es agregar también 'Rails.application.config.assets.precompile += %w(yourfilename.js)' a tu archivo 'config/initializers/assets.rb'.

Cuestiones relacionadas