2012-07-02 16 views
5

'u dahil edemez. Bu tutorial'u takip ediyorum ve Gem dosyasına ekleyip yüklemeyi yüklemesine rağmen iyi çalışıyor. Ben application.js içine dahil etmek deneyin an, dosya, aşağıdaki hatayı alıyorum bunu yüklenirken:Raylar, AngularJS

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

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

application.js dosya görünmesi için (hat 13 ile başlayan) gibi

Bu nedenle, sorum, AngularJS'yi Rails projeme nasıl başarılı bir şekilde ekleyebilirim?

Şu anda Rails 3.2.2 ve Ruby 1.9.3 kullanıyorum.

cevap

5

Aynı problemle karşılaştım. Bunu takip ederek çözdüm.

1) Benim durumumdaapplication.js dosyasında eksikti, bu yüzden ekledim.

2) yeniden başlatılması Apache Sunucusu (WEBrick, o zaman her zaman bir web sunucusunu yeniden başlatmak zorunda bir mücevher ekledikten sonra)

+0

Mükemmel, teşekkür ederim! – Hengjie

+0

Halen ne olduğunu araştırıyorum, ancak bazı şeylerin görünüşüne göre, bu satır bir süredir application.js'ye eklendiğinde, kaldırılabilir. Kulağa tuhaf geliyor ve hala require_tree olmadan çalışmasına izin veren neyin değiştiğini araştırıyorum. – Hengjie

+1

require_tree. klasörde bulunan tüm komut dosyalarınızı tek bir dosyada (bu durumda application.js) tutmanıza neden olur. – GBD

5

yeniden başlatın.

Gem'in kaynak koduna bakmadan, vendor/assets/javascripts numaralı açısal javascript'leri vardır, bu da //= require angular numaralı telefonu kullanarak kullanılabilir olacakları anlamına gelir. Yüklemiyorlarsa, büyük olasılıkla sunucunun yeniden başlatılması ve yüklemeyi gruplamanız gerekir.

require_tree .'a gelince, bunun önemle tavsiye edilmesine dikkat etmelisiniz, çünkü bu, şeylerin yüklenme sırasındaki kontrolünü kaybedeceğiniz anlamına gelir.

Örneğin açısal kendisi jQuery (jQuery lite) ait bu kendi sürümü ile paketlenir, ama zaten jQuery mevcut olmaması halinde yüklendiğinde, bu küresel sürümünü kullanacaktır.

//= require jquery 
//= require angular 

Eğer backbone.js ve alt çizgi varsa örneğin yük sırası önemli diğer birçok vaka vardır daha farklı bir şey yapacak

//= reqiure angular 
//= require jquery 

yapıyor demektir

, sen Yüklemeyi omurga, vs.'den önce yapmak istiyorum.

Genel bir uygulama olarak, her zaman sadece require numaralı telefonu kullanmanızı tavsiye ederim. Siparişin önemli olmadığı kendi kodu, örneğin kendi kontrol sisteminiz için //= require_tree ./controllers. Bu durumda require_tree'un mükemmel olduğunu söyleyebilirim.

+0

Bu garip çünkü tek bir gizli dosya dışında satıcı/varlık/javascriptlerde bir şey yok. Gem dosyasına ekledikten, paket yüklemeden ve yeniden başlatılan ustabaşından sonra normal olması mı gerekiyor? – Hengjie

+0

@Hengjie raylar uygulamasında direclty kopyalamaz. Gem kendisi dosya ile bir 'satıcı/varlık/javascripts' dizini vardır. –

2

Herhangi birinin sorunu aynıysa ve sunulan çözüm işe yaramazsa. Ben varlığın

group :assets do 
//= require angular 
end 

Ancak yine aynı hata almaya edildi //= require angular ekledik. Biraz arama yaptıktan sonra, bu nedenle varlık grubunun dışında eklenen olması gerektiğini öğrendim. Şimdi her şey güzel. Ancak bunun en iyi yol olup olmadığından emin değilim, ancak artık bu hatayı almıyorum.senin gemfile içinde

4

Böyle kullanıyorsanız:

group :assets do 
    gem 'angularjs-rails' 
end 

sonra bu grup kaldırın:

örn::

gem 'angularjs-rails' 

It varlıklar şey, bu bloğun olmadan basit olmalıdır kesinlikle çalışacaktır

+1

Ancak, neden varlık grubunda çalışmıyor? – kiddorails

+0

Raylar 4 sürümünde, bu gem için varlıklar ile bazı çatışma var olabilir, kontrol etmek gerekir –