Rails:Bootstrap和下拉列表无法正常工作

Eas*_*per 8 ruby-on-rails twitter-bootstrap

在我的application.html.erb中,我有以下内容:

<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>
Run Code Online (Sandbox Code Playgroud)

在我的gemfile中,我有以下内容:

gem 'twitter-bootstrap-rails'
gem 'bootstrap-datepicker-rails'
Run Code Online (Sandbox Code Playgroud)

在我的views\layouts_header.html.erb中,我有:

  <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>
Run Code Online (Sandbox Code Playgroud)

Admin_menu在其他地方定义为:Admin_menu = Hash.new Admin_menu ["Papers"] ="/ papers"Admin_menu ["Tracks"] ="/ tracks"Admin_menu ["出勤"] ="/出勤"

当我点击插入符号时,没有任何反应.我检查了HTML代码,下拉菜单选项就在那里.

有任何想法吗?

Pau*_*rth 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" %>
Run Code Online (Sandbox Code Playgroud)

对此:

<%= javascript_include_tag "https://js.stripe.com/v1/" %>
<%= javascript_include_tag "application" %>
Run Code Online (Sandbox Code Playgroud)

您当前的代码多次包含application.js,这对于Bootstrap的下拉代码来说是一个问题.我敢打赌,如果你查看你的application.js文件,你会看到它接近顶部:

//= require bootstrap
Run Code Online (Sandbox Code Playgroud)

这意味着每次包含application.js时都会加载一次bootstrap,然后再从github加载.

如果您阅读Bootstrap的Dropdown JS代码,您会看到它添加了一个点击监听器来切换下拉菜单.如果您运行此代码两次,则添加两个单击侦听器.所以在每次点击时,这两个听众都会打开菜单并突然再次关闭它.

我有一个类似于你的问题,我没有注意到我javascript_include_tag的Stripe也重新包括在内application.我想我们可能会从同一个地方复制/粘贴!