0

Railsアプリを1週間開発しています。私はjquery-railsgemを使用してjQueryを使用していますが、すべてが正常に機能していました。しかし、今日、私が開発サーバーを起動したとき、jQueryがロードされていませんでした。コンソールはエラーjQuery not definedなど$ not definedを出しました。そこで、jQueryファイルが含まれているかどうかを確認しました。しかし、jquery.jsファイルへのリンクをクリックすると、次のものしか含まれていませんでした。

(function() {


}).call(this);

jQueryが機能していません。

これが私がjsライブラリを要求した方法です:

//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap
//= require bootstrap-datepicker/core
//= require_tree .

ブートストラップとjQueryを交換してみましたが、jQueryを削除して、ブートストラップのみを使用してみました。何も機能していないようです。

面白いのは、昨夜まで完璧に機能していたことです!そして、私はjsライブラリを追加または削除したことを覚えていません。私はJavascriptコードを書いているだけでした。だから私は一晩で何がうまくいかなかったのか見当がつかない。

私が試したことがないのは、CDNからjQueryを提供することだけです。しかし、それは私のアプリがどこにデプロイされるかを考えるとオプションではありません。

助けてください。

私のGemfile:

source 'https://rubygems.org'

gem 'rails', '3.2.8'

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

gem 'will_paginate', '~> 3.0.beta'
gem 'will_paginate-bootstrap'


#gem 'sqlite3'
gem 'mysql2'
#gem 'devise'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
    gem 'twitter-bootstrap-rails'
    gem 'less-rails'
  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  gem 'therubyracer', :platforms => :ruby

  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'
gem 'bootstrap-datepicker-rails'
gem 'libv8'

前もって感謝します。

アップデート:

さて、私は何が悪かったのか理解しました。jqueryいくつかのjqueryプラグインをテストするために呼び出されるコントローラーを作成したため、jquery.js.coffeeファイルが。の下に作成されました/assets/javascripts。このファイルを削除してコントローラーを削除すると、すべてが正常に機能し始めました。

誰かがこの行動を説明できますか?

4

1 に答える 1

1

参照する場合

//= require jquery

マニフェストファイルで、Railsはいくつかの場所でファイルを探しますjquery.js。これらの場所はで定義されていRails.application.config.assets.pathsます。

jquery.jsjquery.js.coffeeこの場合、CoffeescriptはJavascriptにコンパイルされるため、両方とも一致しますjquery.js

呼び出されたコントローラーとjqueryそれに続くファイルを生成したとき、 Railsが含まれているgemのベンダーディレクトリを調べる前にjquery.js.coffee、参照されたファイルのルックアップはすでに満たされていました。jquery.jsしたがって、間違ったファイルが含まれていました。

—これはあなたの(2番目の)質問に答えますか?

于 2012-11-08T10:15:47.657 に答える