2012-04-10 10 views
9

Estoy implementando una aplicación Rails 3.2 para Heroku. Estoy precompilando activos localmente según https://devcenter.heroku.com/articles/rails3x-asset-pipeline-cedar.¿Por qué Heroku regresa 'devise/sessions.js no está precompilado'?

Pero estoy

ActionView::Template::Error (devise/sessions.js isn't precompiled): 

Alguien más ha encontrado esto?

¿Cuál es la forma correcta para asegurar javascript Idear se precomiled.

Gracias!

+0

¿Estás en la pila de cedro? – sethvargo

+0

Hola sethvargo. sí, estoy en Cedar –

Respuesta

6

Gracias por todas las sugerencias. Después de pensarlo un poco, me doy cuenta de que el problema se debía a cómo la aplicación estaba configurada para llamar a javascript específico del controlador. En caso de que alguien más se encuentre con este problema, esto es lo que hice.

que habían estado cargando Js-controlador específico a través de la siguiente etiqueta en el archivo de diseño.

<%= javascript_include_tag "application", params[:controller] %> 

El problema es que esto falla si un archivo cotroller.js particular no existe. En mi caso, la página de inicio de sesión falló porque no había creado un archivo deis/sessions.js.

que podría haber creado este archivo, pero me pareció que era un enfoque desordenado. No me gusta la idea de tener muchos archivos vacíos por ahí.

En lugar de eso estoy llamando explícitamente javascript-controlador específico desde el punto de vista

<% javascript 'controller.js' %>  

Usando el siguiente ayudante en application_helpers

def javascript(*files) 
    content_for(:head) { javascript_include_tag(*files) } 
end 

parece estar funcionando muy bien hasta ahora.

Gracias de nuevo por las sugerencias.

+3

Para aquellos interesados ​​en tomar el enfoque de agregar un archivo js, ​​pueden crear una carpeta 'devise' en' app/assets/javascripts', luego colocar el archivo 'sessions.js' allí. Útil si quieres adivinar la página de inicio de sesión. NB: Necesita enumerar los activos accedidos individualmente: http://stackoverflow.com/questions/7425929/rails-3-1-strategy-for-pre-compiling-controller-specific-js-assets – brookr

+0

Muchas gracias, esto es la respuesta que he estado buscando durante horas! –

3

intente ejecutar rake assets:precompile.


Trate de añadir esto a su config/ambientes/production.rb:

config.assets.precompile += %w(*.css *.js) 

O especificar su archivo.

+0

Hola Justin D. Agradezco tu respuesta, muchas gracias. Esto debería haber funcionado (habría funcionado, si hubiera creado el archivo .js necesario), pero después de pensar en este tema de la noche a la mañana, me di cuenta de que el problema se debía a cómo estaba llamando javascripts específicos del controlador. He agregado una respuesta para ayudar a otros que pueden encontrar un problema similar. –

5

Mi solución:

<%= javascript_include_tag "application", controller_name if controller_name != "sessions" %> 
Cuestiones relacionadas