2012-07-02 4 views
5

を含めることはできません。私は、application.jsにファイルを、それを含めるようにしようとした瞬間、それをロードしている間、私は次のエラーを取得する:Railsは、私はこの<a href="http://rubydoc.info/gems/angularjs-rails/1.0.1.1/frames" rel="noreferrer">tutorial</a>を以下だし、インストール宝石ファイルおよびバンドルに追加するが、それが正常に動作しますAngularJS

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

application.jsファイルには、そう(13行目から始まる)のようになります。

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

したがって、私の質問はどのように私は正常に私のRailsプロジェクトにAngularJSを含めることができますか?

私は現在のRails 3.2.2、とRuby 1.9.3を使用しています。

答えて

5

私は同じ問題に直面していました。私はそれを次のように解決した。

1)私の場合、//= require_tree .application.jsファイルに欠落していた...ので、私はそれを追加しました。

2)が再起動Apacheサーバ(WEBrickにあれば、いつでもWebサーバを再起動する必要が宝石を追加した後)

+0

完璧、ありがとうございます! – Hengjie

+0

私はまだ何が起こったのかを調べていますが、物事の見た目では、しばらくの間、その行がapplication.jsに追加されると削除できます。それは変わったように聞こえますが、require_treeなしで動作するように変更されたものはまだ調査中です。 – Hengjie

+1

require_tree。フォルダ内にあるすべてのスクリプトを保持する単一のファイル(この場合はapplication.js)が必要になります。 – GBD

5

を再起動します。

宝石のソースコードを見ると、角のJavaScriptがvendor/assets/javascriptsにあります。つまり、//= require angularで利用できるようになります。それらがロードされない場合は、おそらくサーバーを再起動する必要があり、インストールをバンドルする必要があるからです。それはあなたが物事がロードされますする順番の制御を失うことを意味しますので、

require_tree .については、私は強く、それに対して助言します。

たとえば、angle自体は独自のバージョンのjQuery(jQuery-lite)でパッケージ化されていますが、ロード時にjQueryが存在する場合は、グローバルのバージョンが使用されます。

//= require jquery 
//= require angular 

あなたはBACKBONE.JSとアンダースコアを持っている場合、例えばロード順序は関係ができ、他の多くの例がありますが、とは異なる何かをするだろう

//= reqiure angular 
//= require jquery 

をやって意味

、あなたはバックボーンの前にUnderscoreをロードしたい場合があります。

一般的な練習として、私はいつもrequireを使用することをお勧めします。オーダーが関係ない独自のコード。たとえば、自分のコントローラーのディレクトリーの場合は//= require_tree ./controllersです。その場合、私はrequire_treeが完全にokだと言うでしょう。

+0

1つの隠しファイル以外のベンダー/アセット/ javascriptには何もないので、変です。これは、Gemファイルに追加した後、バンドルをインストールして、再起動した監督の後で正常になるようになっていますか? – Hengjie

+0

@Hengjieあなたのレールアプリケーションdirecltyにはコピーされません。この宝石自体にはファイルとともに 'vendor/assets/javascripts'ディレクトリがあります。 –

2

はケースで誰もが同じ問題を持っていたし、提供するソリューションは、動作しないでしょう。 私は、しかし、まだ私は同じエラーを取得した資産

group :assets do 
//= require angular 
end 

//= require angularを追加しました。少しの検索の後、何らかの理由で資産グループの外にを追加する必要があることがわかりました。すべて今良い。しかし、これが最善の方法であるかどうかはわかりませんが、私はもうこのエラーが発生していません。

group :assets do 
    gem 'angularjs-rails' 
end 

そのグループを削除します:資産の事、それはブロックせずにシンプルでなければなりません:あなたはこのように使用している場合は、あなたのgemfileで

4

例:

gem 'angularjs-rails' 

それは、間違いなく動作します

+1

しかし、それは資産グループではなぜ機能しませんか? – kiddorails

+0

レール4バージョンでは、この宝石の資産との競合があるかもしれませんが、チェックする必要があります –

関連する問題

 関連する問題