2012-07-02 21 views
5

Estoy siguiendo este tutorial y aunque lo agregue al archivo Gem y la instalación del paquete funciona bien. En el momento en que trato de incluir en application.js, el archivo, me sale el siguiente error al cargarlo:Los rieles no pueden incluir AngularJS

throw Error("Sprockets::FileNotFound: couldn't find file 'angular'\n (in /my/path/to/rails/app/assets/javascripts/application.js:13)") 
archivo

application.js parece tan (a partir de la línea 13):

//= require angular 
//= require jquery 
//= require jquery_ujs 
//= require jquery.ui.autocomplete 
//= require bootstrap 
//= require pusher.min.js 
//= require pusher_setup 
//= require_directory . 

Por lo tanto, mi pregunta es ¿cómo puedo incluir AngularJS con éxito en mi proyecto de Rails?

Actualmente estoy utilizando Rails 3.2.2, y Ruby 1.9.3.

Respuesta

5

Tuve la misma cara. Lo resolví de la siguiente manera.

1) En mi caso, //= require_tree . faltaba en el archivo application.js .. así que lo he agregado.

2) se reinició el servidor Apache (Si WEBrick, a continuación, reiniciarla)

+0

Perfecto, gracias! – Hengjie

+0

Todavía estoy investigando lo que sucedió, sin embargo, por el aspecto de las cosas, una vez que la línea se agrega a application.js por un tiempo, se puede eliminar. Suena extraño, y todavía estoy investigando qué cambió para permitir que funcione sin require_tree. – Hengjie

+1

require_tree. dará como resultado que tenga un único archivo (application.js en este caso) que contenga todos los scripts que hay en la carpeta. – GBD

5

Después de añadir una joya que siempre hay que reiniciar el servidor web.

Al mirar el código fuente de la gema, tiene los javascripts angulares en vendor/assets/javascripts, lo que significa que estarán disponibles simplemente haciendo //= require angular. Si no se cargan, es probable que sea porque el servidor debe reiniciarse y necesita agrupar la instalación.

En cuanto al require_tree ., desaconsejo encarecidamente eso, porque significa que perderá el control sobre el orden en que se cargan las cosas.

Por ejemplo en sí angular está empaquetado con su propia versión de jQuery (jQuery-lite), pero si ya hay jQuery presente cuando se carga, se utilizará la versión global.

lo que significa hacer

//= reqiure angular 
//= require jquery 

va a hacer algo diferente, que

//= require jquery 
//= require angular 

hay muchos otros casos en los que el orden de carga puede materia, por ejemplo, si usted tiene Backbone.js y subrayado, se querrá cargar el subrayado antes de la red troncal, etc.

Como práctica general, siempre recomendaría simplemente usar require, a menos que esté cargando su propio código donde el orden no importa, por ejemplo //= require_tree ./controllers para su propio directorio de controladores. En ese caso, diría que require_tree está perfectamente bien.

+0

Es extraño porque no hay nada en el proveedor/activos/javascripts que no sea un archivo oculto. ¿Es eso normal después de haberlo agregado al archivo Gem, paquete instalado y reiniciado capataz? – Hengjie

+0

@Hengjie no se copiará en su directorio de aplicación de rieles. La gema tiene un directorio 'vendor/assets/javascripts' con el archivo. –

2

En caso de que alguien tuviera un problema similar, la solución ofrecida no funcionaría. He añadido //= require angular en el activo

group :assets do 
//= require angular 
end 

Sin embargo todavía me estaba poniendo el mismo error. Después de un poco de búsqueda descubrí que por alguna razón necesita ser agregado fuera del grupo de activos. Todo bien ahora. No estoy seguro de si esta es la mejor manera, sin embargo, ya no estoy recibiendo este error.

4

en su Gemfile si está utilizando la siguiente manera:

group :assets do 
    gem 'angularjs-rails' 
end 

continuación, eliminar ese grupo: activos cosa, que debe ser simple sin bloque:

ejemplo:

gem 'angularjs-rails' 

Se Definitivamente va a funcionar

+1

¿Pero por qué no funciona en el grupo de activos? – kiddorails

+0

En versión de rieles 4, puede haber algún conflicto con los activos de esta gema, es necesario verificar –

Cuestiones relacionadas