8

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

在我的意见\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["Papers"] = "/papers" Admin_menu["Tracks"] = "/tracks" Admin_menu["Attendance"] = "/attendance"

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

有任何想法吗?

4

2 回答 2

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的 for Stripe 也重新包含了application. 我想我们可能从同一个地方复制/粘贴!

于 2012-08-30T15:29:36.890 回答
0

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

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

于 2012-08-08T15:35:18.203 回答