37

誰かが私を助けることができるかどうか疑問に思っていました。ブートストラップのドロップダウン メニューが突然機能しなくなりました。理由がわかりません。以前は機能していました。ビューのレイアウトビューに触れなかったので、問題はないと思います。私のjavascriptと関係があると確信していますが、どこから来たのかわかりません。

私の宝石ファイルは...

gem 'rails', '3.2.3'
gem 'bootstrap-sass', '2.0.1'
gem 'bcrypt-ruby', '3.0.1'
gem 'faker', '1.0.1'
gem 'will_paginate', '3.0.3'
gem 'bootstrap-will_paginate', '0.0.5'
gem 'devise'
gem 'carrierwave'
gem 'rmagick'
gem 'delayed_job_active_record'
gem 'daemons'
gem 'make_voteable'
gem 'admin_data'
gem 'indextank'

私のapplication.jsは...

//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require bootstrap-dropdown
//= require bootstrap
//= require_tree .

多分それは私の設定ファイルと関係があると思いますか?

4

14 に答える 14

108

移動しなければならなかった

//= require jquery

//= require bootstrap

以内に

application.js
于 2012-04-19T06:17:39.170 に答える
21

アセットのプリコンパイルが機能しない場合は、プリコンパイル済みアセットも削除してみてください

rake assets:clean

ドロップダウン js がアセット パイプラインに 2 回読み込まれると、ドロップダウン メニューが即座に開いたり閉じたりするように見えますが、Heroku/Production では問題なく動作することがわかりました。

于 2012-09-05T14:47:49.007 に答える
12

私は同じ問題を抱えていて、それを修正する2つの方法を見つけました。

まず、私のセットアップについて説明します。ブートストラップ サイトの指示に従い、bootstrap-dropdown.js をダウンロードしました。私はそれをassets/javascriptsに入れました。私の application.js ファイルは次のようになります。

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

ドロップダウンが機能しませんでした。

ページ ソースで、bootstrap-dropdown.js のスクリプト タグが 2 回表示されていることに気付きました: (簡潔にするために無関係なものを削除しました)

<script type="text/javascript" src="/assets/jquery.js?body=1">
<script type="text/javascript" src="/assets/jquery_ujs.js?body=1">
<script type="text/javascript" src="/assets/twitter/bootstrap/bootstrap-dropdown.js?body=1">
<script type="text/javascript" src="/assets/twitter/bootstrap/bootstrap-scrollspy.js?body=1">
<script type="text/javascript" src="/assets/twitter/bootstrap.js?body=1">
<script type="text/javascript" src="/assets/bootstrap-dropdown.js?body=1">
<script type="text/javascript" src="/assets/bootstrap.js?body=1">

そのため、application.js から行を削除//= require_tree .し、サーバーを再起動すると、ドロップダウンが機能しました!

次に、行を元に戻し、//= require_tree .代わりにファイル assets/bootstrap-dropdown.js を削除しましたが、再び機能しました!

于 2012-07-15T17:36:25.700 に答える
3

私はこれを理解していませんが、 //= require jquery と //= require bootstrap を並べ替えると、問題が2回修正されたようです。Sashaが提案するように、最初にjqueryの上にブートストラップを移動して修正しました。その後、さらに作業を行い、jruby on rails 3.2.3 を使用してデプロイする準備をしました。プリコンパイル アセット、ウォーブル、およびドロップダウンは、開発と本番の両方で機能しなくなります。public/assets と、いくつかの .class ファイルおよび tmp 内のファイルを削除します。無効。最後に、application.js の順序を最後の失敗エピソードの前の状態に戻しました。つまり、ブートストラップの前に jquery を使用し、ドロップダウンが再び機能するようになりました。

application.js の変更により、キャッシュの再構築がトリガーされたり、問題の原因となる舞台裏のプロセスがトリガーされたりする可能性はありますか? 次回これが発生した場合は、application.js に簡単な変更を加えて、それが何かを行うかどうかを確認します。

于 2012-05-31T13:37:05.110 に答える
3

私は開発マシンでこれを経験していましたが、実稼働サーバーは正常に動作していました。application.js で必要な js を並べ替えると、開発の問題が修正されることに気付きました (ドロップダウンは再び機能します)。私は戻って、生産を再び機能させるために元の状態に戻さなければなりませんでした。今のところ、必要に応じて開発で一時的に変更しています。

于 2012-10-28T14:26:22.260 に答える
2

アセットを再度プリコンパイルすると、問題が解決しました

于 2012-06-12T11:55:47.170 に答える
2

私もこの問題を抱えていました...そしてそれはレールターボリンクに関連していました。最初のページ読み込みではドロップダウンが機能しませんでしたが、更新後には機能します。これは、ターボ リンクを使用すると、一部の Dom 要素が毎回ロード/リロードされない可能性があるためです。そのため、私のドロップダウンは一貫して機能しなくなりました(とりわけ)。これに対する Rails 4 の修正は、jquery.turbolinks gem https://github.com/kossnocorp/jquery.turbolinksを追加することです。私が見つけた (そして後でいくつかのブログで見つけた) この宝石の 1 つのことは、javascript タグが頭の中にある必要があるということです。READMEにはこれについて言及されていません...しかし

于 2014-06-27T17:02:21.557 に答える
1

代替品を見つけました!これらの解決策はすべてうまくいきませんでした。クリックでドロップダウンをトリガーする代わりに、ホバーでトリガーするようにしました。スクリプトタグでページの下部に配置します。コード: http://codedecoder.wordpress.com/2013/10/21/bootstrap-drop-down-menu-not-working-rails/

$(document).ready(function(){
    $('.navbar .dropdown').hover(function() {
        $(this).find('.dropdown-menu').first().stop(true, true).delay(250).slideDown();
    }, function() {
        $(this).find('.dropdown-menu').first().stop(true, true).delay(100).slideUp()
    });
n})
于 2013-11-27T22:47:02.860 に答える
0

Rails 3.1アセットを参照してください-開発中の奇妙なサービング

圧縮されたバージョンが application.js のデバッグ モードに含まれているというバグがあります。

于 2012-05-02T02:48:44.210 に答える
0

アセットのプリコンパイルが機能しませんでした。jquery の前にドロップダウンを配置すると、開発では機能しましたが、運用では機能しませんでした ドロップダウンを削除しても、開発では機能しました :-O

正しい順序で public/assets フォルダー内のすべてを削除すると、開発で機能するようになりました。

于 2012-07-03T10:34:18.117 に答える
0

チケット#5145は最近、このためにクローズされました。修正は元に戻されましたが、アプリケーション固有のソリューションが最後に提供され、私にとってはうまくいきました。ブラウザのキャッシュも必ずクリアしてください。

于 2012-12-11T15:20:36.063 に答える