1

Bootstrap 2.3.2 から 3 にアップグレードしたところ、ドロップダウン メニューが機能しなくなりました。Heroku 用にアセットを再コンパイルしようとしましたが、過去 2 日間、頭を壁にぶつけながらコーディングに費やしました。開発ではすべてが機能しますが、本番では機能しません。関連ファイルは次のとおりです。

Gemfile:

    source 'https://rubygems.org'
ruby '2.0.0'

gem 'rails', '4.0.0'
gem 'bcrypt-ruby', '3.0.1'
gem 'faker', '1.1.2'
gem 'will_paginate', '3.0.4'
gem "will_paginate-bootstrap"

gem 'bootstrap-sass', github: 'thomas-mcdonald/bootstrap-sass'

group :development, :test do
  gem 'sqlite3', '1.3.8'
  gem 'rspec-rails', '2.13.1'
  gem 'guard-rspec', '2.5.0'
  gem 'spork-rails', '4.0.0'
  gem 'guard-spork', '1.5.0'
  gem 'childprocess', '0.3.9'
end

group :test do
  gem 'selenium-webdriver', '2.35.1'
  gem 'capybara', '2.1.0'
  gem 'factory_girl_rails', '4.2.1'
end

gem 'sass-rails', '~>4.0.1'
gem 'uglifier', '2.1.1'
gem 'coffee-rails', '4.0.0'
gem 'jquery-rails', '~>3.0.4'
gem 'turbolinks', '1.1.1'
gem 'jbuilder', '1.0.2'

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

group :production do
  gem 'pg', '0.15.1'
  gem 'rails_12factor'
  gem 'rails_serve_static_assets'
end

アプリケーション.js:

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

//= require bootstrap を jquery または jquery_ujs の要件の下に置くと、開発中に js が機能しなくなります。

production.rb:

  config.cache_classes = true

  config.eager_load = true

  config.consider_all_requests_local       = false
  config.action_controller.perform_caching = true

  config.serve_static_assets = true

  config.assets.js_compressor = :uglifier

  config.assets.compile = true

  config.assets.digest = true

  config.assets.version = '1.0'

  config.force_ssl = true

  config.log_level = :info

  # Precompile additional assets.
  # application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
  # config.assets.precompile += %w( search.js )

  config.i18n.fallbacks = true

  # Send deprecation notices to registered listeners.
  config.active_support.deprecation = :notify


  # Use default logging formatter so that PID and timestamp are not suppressed.
  config.log_formatter = ::Logger::Formatter.new

私は何が欠けていますか?

4

3 に答える 3

1

ヘッダーで何かがおかしくなり、アセットが 2 回呼び出されたようです。

将来の世代のために、私のページのソース コードを localhost に表示することで、これを判断することができました。Heroku では、プリコンパイルされた .js ファイルしか表示されていなかったため、表示されませんでした。localhost でページ ソースを表示すると、dropdown.js を含むすべてが 2 回表示されていることがわかりました。アセットへの二重呼び出しを修正し、JavaScript が Heroku で再び動作するようになりました。

コーディング時間の 3 晩を費やして、見つけたすべてのソースが動作するように指示されたコードを見て、まだ動作していなかったので、もっと早くそれを見ていたらよかったのにと思います!

于 2013-10-25T01:59:21.927 に答える
1

アセット パイプラインの問題のようです。アセットをローカルでプリコンパイルして、アセットをすべて削除し、git にプッシュしてから、再度コンパイルして git にプッシュします。Web ブラウザのコンソールにエラーはありませんか? この質問はかなり出てくるようで、これらを見てみたいかもしれません:

Twitterのブートストラップドロップダウンが突然機能しなくなりました

Javascript 機能は localhost では機能しますが、Heroku にデプロイすると機能しません

rails precompile javascriptがローカルでは動かないのにherokuでは動く理由

Heroku にデプロイすると Rails custom.css が機能しない

于 2013-10-17T04:25:38.633 に答える
0

私はまだ Rails 3 を使用していますが、Bootstrap 3 に更新した後、ドロップダウンが機能しないという同じ問題がありました。さらに、application.js ファイルに //=require bootstrap を配置した順序にも依存しているように見えました。

これを修正するために行ったのは、手動で Bootstrap ファイルをインストールし、css ファイルと js ファイルだけをそれぞれのフォルダーにインストールし、application.js ファイルから //=require bootstrap 行を削除し、application.css から *=require bootstrap を削除することでした。ファイル。

また、gem ファイルに古いバージョンが含まれていないことを確認し、念のため bundle install を実行しました。

「require_tree .」行はそれぞれのフォルダーからブートストラップ ファイルを取得し、ドロップダウンは再び正常に動作します。

于 2013-10-21T23:31:29.207 に答える