javascript - example - render js rails
Error "No se puede encontrar la variable" con Rails 3.1 y Coffeescript (2)
Tengo vistas en mi aplicación que hacen referencia a mi archivo application.js que contiene funciones que uso en mi aplicación.
Acabo de instalar el candidato de lanzamiento de Rails 3.1 después de haber usado la versión de borde de 3.1. Hasta que instalé el RC no estaba teniendo ningún problema, pero ahora estoy recibiendo este error:
Error de referencia: No se puede encontrar la variable: indicator_tag
indicator_tag es una función que definí en application.js. La única diferencia que noto en el archivo javascript es que ahora todas mis funciones están incluidas en:
(function() { ... }).call(this);
Entiendo que esto es para el alcance variable Pero, ¿podría evitar que mis páginas usen esas variables? Y antes de que nadie pregunte, me he asegurado de que las rutas de JavaScript sean correctas en mis etiquetas de inclusión.
La solución de Dogbert es una excelente forma de hacerlo si tiene un back-end JS muy sofisticado. Sin embargo, hay una solución mucho más simple si solo tienes un puñado de funciones con las que estás trabajando. Simplemente agréguelos directamente al objeto ventana, así:
window.indicator_tag = (el) ->
...
Luego puede usar sus funciones desde cualquier lugar sin tener que envolverlas en otro objeto.
Por defecto, cada archivo CoffeeScript se compila en un cierre. No puede interactuar con funciones de un archivo diferente, a menos que las exporte a una variable global. Yo recomendaría hacer algo como esto:
Encima de cada archivo coffeescript, agregue una línea como
window.Application ||= {}
Esto asegurará que haya una aplicación global nombrada presente en todo momento.
Ahora, para cada función que tendrá la necesidad de llamar desde otro archivo, defínalos como
Application.indicator_tag = (el) ->
...
y llamarlos usando
Application.indicator_tag(params)