4

「application.js」ファイルのマニフェスト セクションで指定されたファイルをロードするためのスプロケットを取得する際に問題が発生しています。「application.js」ファイルのディレクティブの順序を変更しようとしました。ruby/rails のアップグレードとダウングレードを試みましたが、スプロケットがディレクティブのファイルをロードする原因は何もありません。

「assets/javascripts」および「assets/stylesheets」フォルダーに他のいくつかのファイルを追加して、スプロケットがそれらをロードするかどうかを確認しましたが、それらのいずれもロードされていません。ただし、コンソールにドロップして「Sprockets.class」と入力すると、モジュールが認識されるため、実際にスプロケットがロードされているように見えます。

Ruby 2.0.0/Rails 3.2.8 を使用しています

これが私のGemfileです

source 'https://rubygems.org'

gem 'rails', '3.2.8'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'sqlite3'

gem "rspec-rails", :group => [:test, :development]
group :test do
gem "factory_girl_rails"
gem "capybara"
gem "guard-rspec"
gem "debugger"
end

group :assets do
gem 'sass-rails',   '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'uglifier', '>= 1.0.3'
end

gem "jquery-rails"

そして、これがスプロケットまたはjQueryに関連するエントリを含む私のGemfile.lockです

specs:
actionpack (3.2.1)
  sprockets (~> 2.1.2

sprockets (2.1.3)

jquery-rails (3.0.4)

DEPENDENCIES
  jquery-rails

編集 1 -- Application.js

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts,     vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.
//
//= require jquery
//= require jquery_ujs
//= require jquery.cookie
//= require_tree .

$(document).ready(function(){
alert('shit is ready');
});

次に、クロムコンソールで「Uncaught ReferenceError: $ is not defined」が表示されます

「Rails.application.config.assets.paths」を使用してアセット パスを表示すると、jQuery ライブラリが実際にロード パスにあることがわかります。ファイルが実際にパスで指定された場所にあることも確認しました。

プロジェクトをバンドルしようとしたときに、依存関係に関するメッセージはまったく表示されませんでしたが、それが起こっているのではないかと思います。Ruby 1.9.2/Rails 3.2.1 で jquery/asset パイプラインを使用するプロジェクトは他にもたくさんありますが、新しいセットアップでは何も変わっていません。私の理解では、スプロケットとjqueryはどちらも箱から出してすぐに動作するはずなので、特に当惑しています。

ありがとう!!!!

4

2 に答える 2

7

これは、スプロケットと Ruby 2.0 の問題によるものだと思います。同じ問題が発生しました。https://github.com/rails/rails/issues/8237およびhttps://github.com/sstephenson/sprockets/issues/352を確認してください。Rails を 3.2.13 に更新するだけで動作するはずです。

于 2013-07-26T21:37:12.947 に答える
0

これは本番環境ですか?config/environments/production.rb でこれを試してください

config.assets.precompile += ['*.js', '*.css']
于 2013-07-25T05:40:43.227 に答える