2011-12-06 9 views
2

RailsとJqueryに問題があります。私はAJAXを使って記事をリロードせずにコメントを追加しています。次のコードは、自動的に私の見解/ application.htmlに含まれました:私は、サーバーコンソールには次のようなエラーが表示されていることを実現するまでRails:javascript_include_tag:すべての目的ですか?

<%= javascript_include_tag "application" %> 
    <%= javascript_include_tag :all %> 
    <%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" %> 
    <%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js" %> 

すべてが、正常に動作するように見えた:

ActionController::RoutingError (No route matches [GET] "assets/all.js") 

ので、この行以降私はそれを削除したエラー以外のアプリケーションに何も追加していないようです。次回、私はサーバーを起動し、すべてのコメントが突然2回ポストされるようにアプリケーションを使用しました。さもなければ、すべてがうまくいった。だから私は再び削除された行を追加し、私は全く分からない理由が、私は行を追加し

<%= javascript_include_tag :all %> 

再びの何もかも持っていることは、再び正常に動作意図したように、一つだけのコメントが掲載されます。しかし、私はエラーをスローするので、コードでこれを保持したくないです。誰かがこの動作を説明し、これを修正する方法を教えてもらえますか?

+0

Railsのバージョンは何ですか? 2.3または3.0または3.1? Railsは、3.1以降、アセットパイプラインを使用してアセットを管理していることに注意してください。デフォルトのapplication.jsには、デフォルトでjqueryとjquery-rjsが含まれています。しかし、ルーティングエラーが奇妙に見える:( –

+0

私はレール(3.1.0)を持っているので、 "アプリケーション"以外はすべて削除する必要があります?しかし、私のapplication.jsですべてがコメントアウトされています..? – gaussd

答えて

4

Rails 3.1では、スプロケットを使用してjavascriptとcssファイルをバンドルしています。これにより、:allオプションは廃止されました。スプロケットは、どのジャバスクリプトが含まれているかを管理するために「魔法の」コメントを使用します。

だからあなたapplication.jsは、次のようになります。あなたは他のスクリプトタグは必要ありませんので、

//= require jquery 
//= require jquery_ujs 
//= require jquery-ui 
//= require_tree . 

最初の行はまた、jQueryの自体含まれています。あなたがする必要があるのは、アプリケーションを指すことだけです。

<%= javascript_include_tag "application" %> 

本番にデプロイしている場合は、rake assets:precompileを実行する必要があります。

資産にはRailscasts episodeがあります。これは必見です。

+0

働いた!ありがとう:) – gaussd

関連する問題