2012-08-08 81 views
8

在我application.html.erb,我有以下幾點:的Rails:引導和下拉不工作

<head> 
    <title><%= title %></title> 
    <%= stylesheet_link_tag "application", media: 'all' %> 
    <%= javascript_include_tag "application" %> 
    <%= javascript_include_tag "https://js.stripe.com/v1/", "application" %> 
    <%= csrf_meta_tags %> 
    <%= tag :meta, :name => "stripe-key", :content => STRIPE_PUBLIC_KEY %> 
    <%= javascript_include_tag "http://twitter.github.com/bootstrap/assets/js/bootstrap-dropdown.js", "application" %> 
    <%= render 'layouts/shim' %> 
</head> 

在我的Gemfile,我有以下幾點:

gem 'twitter-bootstrap-rails' 
gem 'bootstrap-datepicker-rails' 

在我的意見\ layouts_header.html.erb,我有: Admin_menu =有:

<li class="dropdown" id="admin_menu"> 
    <a class="dropdown-toggle" data-toggle="dropdown" data-target="#admin_menu"> 
     <%= ADMIN_TITLE %> 
     <b class="caret"></b> 
    </a> 
    <ul class="dropdown-menu"> 
     <% Admin_menu.each do |menu_text, menu_action| %> 
      <li><a href="<%= menu_action %>"><%= menu_text %></a></li> 
     <% end %> 
    </ul> 
    </li> 

Admin_menu如別處定義h.new Admin_menu [ 「期刊論文」] = 「/論文」 Admin_menu [ 「曲目」] = 「/磁道」 Admin_menu [ 「出席」] = 「/出勤」

當我點擊插入符,什麼都沒發生。我檢查了HTML代碼,並選擇了下拉菜單。

任何想法?

+0

當您點擊下拉菜單(或在此之前,例如頁面加載時)時是否出現任何Javascript錯誤? 另外,是否有一個原因,你包括你的'application.js'三次?您已在所有'javascript_include_tag'調用中引用它 - 您只需要它一次。我很確定這不會導致這個問題,但它不會修復。 – BaronVonBraun 2012-08-08 15:47:26

+0

是的,你說得對。我清理了application.js包括。我沒有看到任何javascript錯誤。當我懸停在上面時,脫字符號從灰色變成黑色,但沒有任何反應。當我將鼠標懸停在管理菜單上時,選擇器也不會變成手形。 – EastsideDeveloper 2012-08-08 16:19:25

+0

嘗試將'href =「#」'添加到下拉鍊接本身(具有'dropdown-toggle'類的鏈接)。 – BaronVonBraun 2012-08-08 16:21:44

回答

13

您需要更改這些行:

<%= javascript_include_tag "application" %> 
<%= javascript_include_tag "https://js.stripe.com/v1/", "application" %> 
<%= javascript_include_tag "http://twitter.github.com/bootstrap/assets/js/bootstrap-dropdown.js", "application" %> 

這樣:

<%= javascript_include_tag "https://js.stripe.com/v1/" %> 
<%= javascript_include_tag "application" %> 

您當前的代碼中包含多次application.js,這對Bootstrap的下拉代碼是個問題。如果你在你的application.js文件看我敢打賭,你會看到這個靠近頂部:

//= require bootstrap 

這將意味着你每次包括的application.js時間一旦加載引導,然後再從github上。

如果您閱讀Bootstrap的Dropdown JS代碼,您會看到它將點擊偵聽器添加到切換的下拉菜單中。如果你運行這段代碼兩次,你將添加兩個點擊監聽器。所以在每次點擊時,這兩個聽衆打開菜單並突然關閉它。

我有一個類似於你的問題,我沒有注意到我的javascript_include_tag條紋也重新包括application。我想我們可能從同一個地方複製/粘貼!

+0

謝謝。這工作! – EastsideDeveloper 2012-08-31 15:08:13

+1

它也包括了我的兩次javascript。經過多次搔抓之後,我在應用程序佈局的底部也找到了javascript_include_tag。 – 2012-09-13 19:32:00

+0

你有沒有機會在你的應用中加入turbolinks?我從application.js中刪除了它,它解決了我的問題。 – 2013-07-02 21:32:02

0

使用Firebug或Chrome擴展在瀏覽器中檢查html。如果它是不正確嘗試使用助手,以避免與字符串搞亂:

<li><%= link_to menu_text, menu_action %></li>

+0

在我的問題中,我提到HTML很好,下拉菜單選擇在那裏。 – EastsideDeveloper 2012-08-08 16:21:02