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

时间:2012-08-08 14:46:47

标签: 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>

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

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

在我的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>

Admin_menu在别处被定义为:     Admin_menu = Hash.new     Admin_menu [“论文”] =“/论文”     Admin_menu [“曲目”] =“/曲目”     Admin_menu [“出席”] =“/出席”

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

有什么想法吗?

2 个答案:

答案 0 :(得分: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时都会加载一次bootstrap,然后再从github加载。

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

我遇到了与您类似的问题,我没有注意到我的javascript_include_tag Stripe也重新包含application。我想我们可能会从同一个地方复制/粘贴!

答案 1 :(得分:0)

使用Firebug或chrome扩展程序检查浏览器中的html。如果不正确,请尝试使用帮助程序以避免弄乱字符串:

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