2012-04-18 132 views
37

我想知道如果有人可以幫助我。我的引導下拉菜單突然停止工作。我不知道爲什麼。它之前在工作。我沒有觸及我的意見我的佈局意見,所以我認爲這個問題不存在。即時通訊很確定它必須做我的JavaScript,但我不知道它來自哪裏。twitter引導下拉突然不工作

我的寶石文件...

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 . 

即時猜測,也許它有某種方式與我的配置文件呢?

+1

嗯,不太確定,但我認爲它與你的js有關,你似乎包括bootstrap-dropdown.js寬鬆的插件以及bootstrap.js插件包(它帶有所有的插件包括的方式,所以不需要包括鬆散的插件),這已知會導致問題,所以只需刪除鬆散的插件,看看是否可行。 – 2012-04-18 22:29:23

+0

嗯,仍然不起作用。我刪除了bootstrap-dropdown。我所要做的就是重新啓動導軌服務器的權利生效? – Sasha 2012-04-19 01:48:37

+0

我修好了。出於某種原因... // =要求jquery打破它 – Sasha 2012-04-19 01:50:40

回答

105

不得不低於

//= require bootstrap 

移動

//= require jquery 

application.js 
+5

這是一個引導錯誤嗎?爲什麼需要在引導後導入jquery? – chourobin 2012-05-02 00:34:26

+0

謝謝,我有require_tree與我的其他庫造成一些衝突。考慮到這一點阻止了引導js的工作,但移動// = require jquery之後的require引導一切正常! – Noz 2012-08-01 18:28:25

+1

這也適用於我,使用最新的寶石結帳。 – Frank 2012-08-02 03:00:51

3

我不明白這一點,但重新排序// =需要jquery和// = require bootstrap似乎爲我解決了兩次問題。首先在jquery上方移動bootstrap,正如Sasha建議修復它。然後我做了更多的工作,準備在rails 3.2.3上使用jruby進行部署。預編譯資產,warble和dropdowns在開發和生產中都不再使用。在tmp中刪除公共/資產,以及一些.class文件和文件。沒有效果。最後,我將application.js中的順序移回到最後一個失敗事件之前的狀態,即引導之前的jquery,並且dropdowns再次工作。

對application.js的修改是否可以觸發某個緩存的重建,或者某個過程是幕後問題的源頭?下次發生這種情況時,我會嘗試對application.js進行簡單的更改,看看它是否會執行任何操作。

2

預編譯資產再次解決了我的問題

0

預編譯資產不起作用。 的jQuery之前把下拉曾在發展,但不是在生產中 刪除下拉發展仍然工作:-O

把正確的秩序和消除公共/資產夾中的一切使它成爲發展工作。

12

我有同樣的問題,我找到了2種方法來解決它。

首先,讓我告訴你我的設置:我按照bootstrap站點上的說明操作,並下載了bootstrap-dropdown.js。我把它放在assets/javascripts中。 我的application.js文件看起來像這樣:

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

下拉框沒有工作。

我注意到在頁面源文件中有一個腳本標籤用於引導 - 下拉。JS出現過兩次:(我已經去除了無關緊要的東西爲簡潔起見)

<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,並再次運作!

+2

這也有幫助。我有資產 - 預編譯中的發展,然後進一步的變化有點矛盾。刪除公共/資產下的文件保存了我。我喜歡這個更好,而不是在jquery之前加載引導程序,在控制檯中創建警告。 – allesklar 2012-08-21 09:57:15

+2

這也適用於我,bootstrap AFTER jQuery和做了一個資產:乾淨,然後再次預編譯。 – 2013-03-19 09:00:56

+0

@CraigMcGuff非常感謝,我在這裏呆了幾個小時! – RedRory 2013-09-14 04:14:04

20

如果預編譯的資產不工作嘗試也刪除預編譯的資產

rake assets:clean

我發現,裝載下拉JS兩次入資產管道似乎打開,並立即關閉下拉菜單,但將做工精細在Heroku/Production中。

+2

這實際上是爲我修好的 – K2xL 2012-12-22 20:46:50

+4

謝謝!但對我來說有點不同,我不得不做'耙資產:乾淨:全部' – Sheharyar 2013-12-07 23:17:06

3

我在開發機器上遇到過這個問題,但我的生產服務器工作正常..我注意到,雖然重新排序js在application.js中需要修復開發中的問題(下拉菜單再次運行),但要小心,因爲這會導致我的生產中的下拉菜單。我不得不回去把他們放回原來的生產狀態。現在我只是在需要時暫時改變它們。

0

門票#5145最近因此關閉。修復已被恢復,但最終提供了特定於應用程序的解決方案,併爲我工作。請務必清除您的瀏覽器緩存。

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}) 
2

我有這個問題太...這是有關軌道turbolinks。在初始頁面加載時,下拉菜單不起作用,但是在刷新之後,它們會。而且,這是因爲通過turbo鏈接,一些Dom元素可能無法每次加載/重新加載。所以,我的下拉停下來一直工作(除其他外)。軌道4修復此問題是添加jquery.turbolinks寶石https://github.com/kossnocorp/jquery.turbolinks。我發現這件寶石的一件事(後來在一些博客中遇到)是JavaScript標籤必須在頭部。自述沒有提到這...但

0

下面//= require bootstrap移動//= require jquery升級gem 'bootstrap-sass',以2.3.0.1,解決我的問題。

我想補充說我上面提到的解決方案只適用於本地主機,但不適用於Heroku。 解決方案無論是在我的情況是:

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

gem bootstrap-sass2.3.0.1

<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>需要在裏面 「_header。 html.erb「,並從」application.html.erb「中刪除。

0

我有這個錯誤,事實證明我的CSS阻止下拉工作。

具體來說,我有'溢出:隱藏;'在我的標題導航CSS。刪除解決了這個問題。