0

アプリケーションを Rails 2 から Rails 3 に移行しています。アプリケーションには多数の JavaScript ファイルがあり、そのほとんどは Google マップで作業するためのものです。以前は、JS ファイルは public/javascripts/*.js にありました。/assets/*.js から JS ファイルをロードしようとする JavaScript タグを作成する javascript_include_tag を使用するページで、それらがロードされていないことに気付きました。(例: /assets/application.js)。

Rails 3 は、JS ファイルが app/assets/javascripts/*.js にあることを期待していると読みました。そのため、JS ファイルをそこに移動しましたが、最初にbundle exec rake assets: precompile を実行しない限り、/assets/application.js でアクセスすることはできません。

JS 開発サイクルを次のようにすることはできません。

  1. JSに変更する
  2. bundle exec rake assets:precompile を実行します
  3. ブラウザをリロードする

それは長すぎます。私の質問は、開発サイクルが次のようになるようにアプリを構成するにはどうすればよいですか?

  1. JSに変更する
  2. ブラウザをリロードする

これまでのところ、私は試しました:

  • config/application.rb の "Bundler.require(:default, :assets, Rails.env)" という行を有効にする
  • config/application.rb で config.assets.enabled = false (および true) を設定する

前もって感謝します。

4

2 に答える 2

1

Rails アセット パイプラインは、マニフェスト ファイルと共に使用する必要があります。これにより、本番環境で Rails がすべての JavaScript を連結できるようになります。これを行うには、次のような application.js ファイルが必要です。

//= require jquery
//= require jquery_ujs
//= require_tree .

ここで重要な部分は、require_tree の部分です。これにより、Rails は他のすべての JavaScript ファイルを同じフォルダーに含めるように指示されます。これは、application.js のマニフェスト バージョンとすべてのカスタム JavaScript ファイルの両方を app/assets/javascripts に配置する必要があることを意味します。

Rails 2 からアセット パイプラインに移行するための優れたガイドは、この RailsCast にあります: http://railscasts.com/episodes/282-upgrading-to-rails-3-1

于 2012-11-08T01:44:31.923 に答える
0

最近、私はこの問題を抱えています

ファイル config/environments/development.rb を変更する config.assets.digest = false と、それが機能します

于 2016-07-19T07:22:24.020 に答える