¿Cómo asocio un archivo CoffeeScript con una vista?
ruby-on-rails-3.1 (2)
Acabo de instalar los rieles 3.1 rc1 y estoy tratando de asimilar la mejor manera de administrar javascript con la nueva canalización de activos. Por defecto, coffeescript se compila en un solo archivo application.js, esto es algo bueno.
Cada archivo de script de café separado se agrega al archivo js y se envuelve en una función anónima que se ejecuta a través del método de llamada. Un escenario común sería usar algo de jquery para convertir varios formularios en formularios ajax, actualizar la interfaz de usuario, etc.
Muchos de estos scripts serán específicos para un controlador o acción, estoy tratando de asimilar la forma "convencional" de manejar esto, ya que todo está envuelto en una función anónima, ¿cómo solo ejecuto el código para un controlador / acción particular, por defecto todas las funciones anónimas se están ejecutando
Jugué con algunos hacks donde cargué el controlador y el nombre de la acción en variables js y luego en coffeescript verifico aquellos para ejecutar código de forma condicional, no me gusta mucho
mi idea inicial fue que cada archivo de café contendría un espacio de nombres js / objeto y llamaría a los específicos de la vista, yendo a spike esto usando la configuración default_bare = true
ver ¿Cómo puedo usar la opción "--bare" en Rails 3.1 para CoffeeScript?
EDITAR
Mirando un poco más: parece que podría ser el enfoque correcto - Error "No se puede encontrar la variable" con Rails 3.1 y Coffeescript
Hay dos enfoques comunes:
Haga el comportamiento condicional en la presencia de un elemento particular. Por ejemplo, el código para ejecutar una hoja de registro debe estar precedido de algo así como
if $(''#signup'').length > 0
Hacer el comportamiento condicional en una clase en el elemento del
body
. Puede establecer la clase de cuerpo usando ERB. Esto también es deseable para las hojas de estilo. El código sería algo así comoif $(''body'').hasClass ''user''
gistyle es una gema simple que te ayuda a ejecutar códigos javascript específicos de acción.
Al seguir su configuración, establece algunos atributos de datos en su elemento de cuerpo, que representan el controlador actual y los nombres de las acciones. Entonces solo llamará a esa acción cuando se cargue la vista correspondiente.