27

カスタムJavascriptを含まない新しいRails 4アプリがあります-フォルダーapp/assets/javascriptsはすべて空です(を除く)。lib/assets/javascriptsvendor/assets/javascriptsapp/assets/javascripts/application.js

アプリをクリックするjquery-ujs has already been loaded!と、JS コンソールにエラーが表示され続けます。「戻る」ボタンを押すたびに発生し、通常のリンクをクリックしたときに発生することもあります (一貫して発生させることはできませんが)。

アプリケーション.js:

//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap
//= require turbolinks
//= require_tree .

application.js からターボリンクを削除すると、エラーが発生しなくなります...そのため、ターボリンクが原因のようです。

これはターボリンクのバグですか、それとも何か間違っていますか?

これが私のGemfileです:

source 'https://rubygems.org'

ruby '2.0.0'

gem 'rails', '4.0.0'

gem 'active_model_serializers'
gem 'aws-sdk'
gem 'bootstrap-sass-rails'
gem 'coffee-script-source', '1.5.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'devise'
gem 'factory_girl_rails', '4.1.0'
gem 'figaro'
gem 'font-awesome-sass-rails'
gem 'jbuilder', '~> 1.2'
gem 'jquery-rails'
gem 'paperclip'
gem 'paperclip-meta', github: 'y8/paperclip-meta'
gem 'pg'
gem 'sass-rails', '~> 4.0.0'
gem 'turbolinks'
gem 'uglifier', '>= 1.3.0'

group :production do
  gem 'rails_12factor'
end

group :doc do
  gem 'sdoc', require: false
end

group :test do
  gem 'capybara', '2.1.0'
end

group :development, :test do
  gem 'childprocess', '0.3.9'
  gem 'debugger'
  gem 'faker', '~> 1.2.0'
  gem 'json_spec'
  gem 'rspec-rails'
  gem 'rspec-mocks'
end

group :development do
  gem 'annotate'
  gem 'hirb'
  gem 'wirb'
end

application.jsの s の順序を変更しても、require役に立たないようです。

4

4 に答える 4

58

最も可能性の高い説明は、ページにスクリプトbodyを含めているということです。

詳細については、この問題を参照してください: https://github.com/rails/turbolinks/issues/143

ターボリンクのreadmeから:

経験則として、Turbolinks に切り替えるときは、すべての JavaScript タグを 内に移動してからhead逆方向に作業し、絶対に必要な場合にのみ JavaScript コードを本体に戻します。本文に再評価したくないスクリプト タグがある場合は、data-turbolinks-eval属性をfalse次のように設定できます。

<script type="text/javascript" data-turbolinks-eval=false>
  console.log("I'm only run once on the initial page load");
</script>
于 2013-12-19T15:09:55.777 に答える
5

私は同じ問題に直面し、いくつかのヒットと試行を行った後、javascript ファイルのシーケンスが重要であることがわかりました。

作業シーケンスは

//= require jquery
//= require jquery_ujs
//= require jquery.turbolinks
//= require turbolinks

この解決策が誰かを助けることを願っています。

于 2014-08-04T22:05:39.430 に答える
2

私にとっては、これらを2回書いたので、2回ロードしていました。//= require jqueryscript タグとしてapplication.jsに 1 回、application.html.erb に 1 回。

于 2017-11-28T10:33:18.687 に答える