Phoenix Link方法:: delete在Bootstrap下拉列表中不起作用

Emi*_* He 3 javascript elixir phoenix-framework

在我的凤凰应用程序中,<%= link ... ,,方法:: delete%>在Bootstrap下拉列表中不起作用

  <ul class="nav navbar-nav navbar-right">
    <%= if !@conn.assigns.current_user do %>
      <li> <%= link "Log In" , to: session_path(@conn, :new) %></li>
    <% else %>
      <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">
          Hi!, <%= @conn.assigns.current_user.username %>
          <b class="caret"></b>
        </a>
        <ul class="dropdown-menu">
          <li><%= link "Log out", to: session_path(@conn, :delete, @conn.assigns.current_user), method: "delete" %></li>
          <li> <%= link "Log In" , to: session_path(@conn, :new) %></li>
        </ul>
      </li>
    <% end %>
  </ul>
Run Code Online (Sandbox Code Playgroud)

但是当我在"下拉菜单"之外制作时,它的效果很好.
当我将<%= link ...%>更改为<%=按钮...%>时,它也能正常工作!!

我的brunch.js包含了插件中的sass

plugins: {
  babel: {
    // Do not use ES6 compiler in vendor code
    ignore: [/web\/static\/vendor/]
  },

  sass: {
    options: {
      includePaths: ["node_modules/bootstrap-sass/assets/stylesheets"], // tell sass-brunch where to look for files to @import
      // minimum precision required by bootstrap-sass
      //precision: 8
    },
    precision: 8
  },
  copycat: {
    "fonts": ["node_modules/bootstrap-sass/assets/fonts/bootstrap"]   // copy node_modules/bootstrap-sass/assets/fonts/bootstrap/* to priv/static/fonts/
  }
},

...
...

npm: {
  enabled: true,
  whitelist: ["phoenix", "phoenix_html", "jquery"],
  globals: { // bootstrap-sass' JavaScript requires both '$' and 'jQuery' in global scope
    $: 'jquery',
    jQuery: 'jquery',
    bootstrap: 'bootstrap-sass' // require bootstrap-sass' JavaScript globally
  }
}
Run Code Online (Sandbox Code Playgroud)


我认为问题与javascript有关,但我不知道如何修复它.
有人有同样的问题吗?谢谢!

Osk*_*kar 7

问题来自Bootstrap的JavaScript部分.

这是违规行bootstrap.js(v3.3.7中的第910行):

.on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
Run Code Online (Sandbox Code Playgroud)

要使链接正常工作,您必须不要将链接包装在<form>标记中,或者通过在以下代码中包含以下代码来删除此事件处理程序app.js:

$(document).off('click.bs.dropdown.data-api', '.dropdown form');
Run Code Online (Sandbox Code Playgroud)